2

iOS 8 Photos フレームワークを使用して写真を読み込み、カスタム ビューに表示しています。写真ライブラリへのアクセス許可を求められたときに、[OK] をクリックした後、戻ってこのビューを再度読み込むまで、写真は読み込まれません。その後、すべてがうまくいきます。私のコードは次のようなものです:

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]ます。この配列は、サイズが 20 以下の collectionView のデータソースです。

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 つだけです。「OK」をクリックしている限り、初回を除いて毎回すべての写真が即座に読み込まれます。これについて助けてくれる人はいますか?

4

0 に答える 0