2

我正在使用 iOS 8 照片框架来加载照片并将它们显示在自定义视图上。当被问及访问照片库的权限时,在我单击“确定”后,直到我返回并再次加载此视图后才加载照片。之后一切顺利。我的代码是这样的:

在 viewWillAppear() 中:

if PHPhotoLibrary.authorizationStatus() == .Authorized {
  loadLibraryPhotos()
} else {
  PHPhotoLibrary.requestAuthorization {
    [weak self] status in
    if let strongSelf = self {
      if status == .Authorized {
        strongSelf.loadLibraryPhotos()
      } else {
        strongSelf.collectionViewHeightConstraint.constant = 0
        strongSelf.view.layoutIfNeeded()
      }
    }
  }
}

loadLibraryPhotos() 正在加载最新的照片资源并将它们存储在assets: [PHAsset]. 这个数组是一个collectionView的数据源,大小不大于20。

func loadLibraryPhotos() {
var fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate", ascending: false)]

if let fetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions) {
  fetchResult.enumerateObjectsUsingBlock({
    [weak self] asset, index, stop in
    if let strongSelf = self {
      if let asset = asset as? PHAsset {
        strongSelf.assets.append(asset)
        if strongSelf.assets.count == NumberOfMostRecentPhotos {
          stop.memory = ObjCBool(true)
        }
      }
    }
  })
  collectionView.reloadData()
}

屏幕上同时只显示 2 或 3 张照片。只要我点击“确定”,每次除了第一次之外,所有照片都会立即加载。有人可以帮忙吗?

4

0 回答 0