Jon*_*ono 22 uiimageview ios uicollectionview photosframework
所以我使用SwipeView库(https://github.com/nicklockwood/SwipeView)使用iOS8的Photos框架显示图像.
但是,当我调用requestImageForAsset时,我注意到我得到了两个结果,一个缩略图大小,以及我想要的更大的大小.但是,更大的图像没有及时加载(我称之为async我理解),因此返回小图像.
这段代码可能更有意义.
func swipeView(swipeView: SwipeView!, viewForItemAtIndex index: Int, reusingView view: UIView!) -> UIView! {
let asset: PHAsset = self.photosAsset[index] as PHAsset
var imageView: UIImageView!
let screenSize: CGSize = UIScreen.mainScreen().bounds.size
let targetSize = CGSizeMake(screenSize.width, screenSize.height)
var options = PHImageRequestOptions()
// options.deliveryMode = PHImageRequestOptionsDeliveryMode.Opportunistic
options.resizeMode = PHImageRequestOptionsResizeMode.Exact
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: targetSize, contentMode: .AspectFill, options: options, resultHandler: {(result, info)in
println("huhuhuh")
println(result.size)
println(info)
imageView = UIImageView(image: result)
})
println("setting view)
return imageView
}
Run Code Online (Sandbox Code Playgroud)
这是日志输出:
Enteredhuhuhuh
(33.5,60.0)
SETTING VIEW
huhuhuh
(320.0,568.0)
Run Code Online (Sandbox Code Playgroud)
如您所见,它会在收到大图像之前返回图像视图.如何让它返回这个更大的图像,以便它不显示缩略图?
谢谢.
Ton*_*ony 79
读PHImageManager类的标题
如果 - [PHImageRequestOptions同步的]返回NO(或选项为nil),resultHandler可以被调用1次或更多次.通常在这种情况下,resultHandler将在主线程上以请求的结果异步调用.但是,如果deliveryMode = PHImageRequestOptionsDeliveryModeOpportunistic,则可以在调用线程上同步调用resultHandler,如果任何图像数据立即可用.如果在第一次传递中返回的图像数据质量不足,则将在以后使用"正确"结果在主线程上异步调用resultHandler.如果请求被取消,则可能根本不会调用resultHandler.如果 - [PHImageRequestOptions isSynchronous]返回YES,则将在调用线程上同步,同步和调用resultHandler.无法取消同步请求.
所以,你要做的就是让你resultHandler被召唤synchronously
PHImageRequestOptions *option = [PHImageRequestOptions new];
option.synchronous = YES;
[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:target contentMode:PHImageContentModeAspectFill options:option resultHandler:^(UIImage *result, NSDictionary *info) {
//this block will be called synchronously
}];
Run Code Online (Sandbox Code Playgroud)
因此,在结束方法之前将调用您的块
祝好运!
| 归档时间: |
|
| 查看次数: |
20327 次 |
| 最近记录: |