2015-09-28 51 views
0

我知道这一点:如何仅用一个UIImageView显示相册中的所有照片?

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

创建资产数组。从资产中逐一获取图像,并通过在两张图像之间保持1秒的延迟来显示图像。 – Leena

回答

0

我发现这个问题。整个enumerateObjectsUsingBlock()方法运行在一个runloop中,当enumerate方法用完时,它只对imageView(最后一个图像)提交一个更改。

如何解决?使用- performSelector:withObject:afterDelay:在函数结束时调用函数self。请记住退出。

相关问题