我正在使用 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 张照片。只要我点击“确定”,每次除了第一次之外,所有照片都会立即加载。有人可以帮忙吗?