如何从 自定义 相册中获取 所有图像 ? __
var fetchOptions = PHFetchOptions() fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate", ascending: false)] fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue) let allImages:PHFetchResult = PHAsset.fetchKeyAssetsInAssetCollection(albumList[index].collection, options: fetchOptions)
该代码块仅获取其中一些。谢谢。
-> albumList[index].collection的类型是PHAssetCollection
albumList[index].collection
PHAssetCollection
对于Swift 4
使用这个答案为自己编辑了一点。
import Photos func fetchCustomAlbumPhotos() { let albumName = "Album Name Here" var assetCollection = PHAssetCollection() var albumFound = Bool() var photoAssets = PHFetchResult<AnyObject>() let fetchOptions = PHFetchOptions() fetchOptions.predicate = NSPredicate(format: "title = %@", albumName) let collection:PHFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions) if let firstObject = collection.firstObject{ //found the album assetCollection = firstObject albumFound = true } else { albumFound = false } _ = collection.count photoAssets = PHAsset.fetchAssets(in: assetCollection, options: nil) as! PHFetchResult<AnyObject> let imageManager = PHCachingImageManager() photoAssets.enumerateObjects{(object: AnyObject!, count: Int, stop: UnsafeMutablePointer<ObjCBool>) in if object is PHAsset{ let asset = object as! PHAsset print("Inside If object is PHAsset, This is number 1") let imageSize = CGSize(width: asset.pixelWidth, height: asset.pixelHeight) /* For faster performance, and maybe degraded image */ let options = PHImageRequestOptions() options.deliveryMode = .fastFormat options.isSynchronous = true imageManager.requestImage(for: asset, targetSize: imageSize, contentMode: .aspectFill, options: options, resultHandler: { (image, info) -> Void in self.photo = image! /* The image is now available to us */ self.addImgToArray(uploadImage: self.photo!) print("enum for image, This is number 2") }) } } } func addImgToArray(uploadImage:UIImage) { self.images.append(uploadImage) }
对于Swift 2.1
import Photos func FetchCustomAlbumPhotos() { var albumName = "SwiftAlbum" var assetCollection = PHAssetCollection() var albumFound = Bool() var photoAssets = PHFetchResult() let fetchOptions = PHFetchOptions() fetchOptions.predicate = NSPredicate(format: "title = %@", albumName) let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions) if let first_Obj:AnyObject = collection.firstObject{ //found the album assetCollection = collection.firstObject as! PHAssetCollection albumFound = true } else { albumFound = false } var i = collection.count photoAssets = PHAsset.fetchAssetsInAssetCollection(assetCollection, options: nil) let imageManager = PHCachingImageManager() // let imageManager = PHImageManager.defaultManager() photoAssets.enumerateObjectsUsingBlock{(object: AnyObject!, count: Int, stop: UnsafeMutablePointer<ObjCBool>) in if object is PHAsset{ let asset = object as! PHAsset print("Inside If object is PHAsset, This is number 1") let imageSize = CGSize(width: asset.pixelWidth, height: asset.pixelHeight) /* For faster performance, and maybe degraded image */ let options = PHImageRequestOptions() options.deliveryMode = .FastFormat options.synchronous = true imageManager.requestImageForAsset(asset, targetSize: imageSize, contentMode: .AspectFill, options: options, resultHandler: { (image, info) -> Void in self.photo = image! /* The image is now available to us */ self.addImgToArray(self.photo) print("enum for image, This is number 2") }) } } } func addImgToArray(uploadImage:UIImage) { self.images.append(uploadImage) }