如何从自定义相册中获取所有图像-Swift

如何从 自定义 相册中获取 所有图像 ? __

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

回答:

对于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)

}

以上是 如何从自定义相册中获取所有图像-Swift 的全部内容, 来源链接: utcz.com/qa/404068.html

回到顶部