我知道:
imageView.image = aImage
现在我想展示许多照片,即相册中的所有照片。
let fetchResult = PHAsset.fetchAssetsWithLocalIdentifiers(Array(photoIDSet), options: nil)
let imageRequestOptions = PHImageRequestOptions()
imageRequestOptions.synchronous = true
imageRequestOptions.resizeMode = .Fast
fetchResult.enumerateObjectsUsingBlock({
fetchedObject, _, _ in
if let asset = fetchedObject as? PHAsset{
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: specialSize, contentMode: .AspectFit, options: imageRequestOptions, resultHandler: {
image, _ in
dispatch_async(dispatch_get_main_queue(), {
imageView.image = image
})
})
}
})
上述代码无法按预期工作。如果幸运的话,它会改变一次。
有办法吗?
答案 0 :(得分:0)
我发现了问题。整个enumerateObjectsUsingBlock()方法在一个runloop中运行,当enumerate方法用完时,它只对imageView提交一个更改,即最后一个图像。
如何解决?使用- performSelector:withObject:afterDelay:
在函数结束时调用函数self。记得留下一个出口。