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