Swift “访问”;“人民”;相册并从中获取图像
我正在开发一个iOS应用程序,我需要将其导入我的应用程序,库中的一些图像,特别是“人物”相册图像,我需要显示它们,但我无法访问此相册,我尝试了以下代码:Swift “访问”;“人民”;相册并从中获取图像,swift,photosframework,Swift,Photosframework,我正在开发一个iOS应用程序,我需要将其导入我的应用程序,库中的一些图像,特别是“人物”相册图像,我需要显示它们,但我无法访问此相册,我尝试了以下代码: func FetchCustomAlbumPhotos() { let albumName = "People" var assetCollection = PHAssetCollection() var albumFound = Bool() var photoAss
func FetchCustomAlbumPhotos()
{
let albumName = "People"
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 _:AnyObject = collection.firstObject{
//found the album
assetCollection = collection.firstObject!
albumFound = true
}
else { albumFound = false }
_ = collection.count
photoAssets = PHAsset.fetchAssets(in: assetCollection, options: nil) as! PHFetchResult<AnyObject>
let imageManager = PHCachingImageManager()
// let imageManager = PHImageManager.defaultManager()
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: .aspectFit ,
options: options,
resultHandler: {
(image, info) -> Void in
print("Image \(String(describing: image))")
self.addImgToArray(uploadImage: image!)
//self.photo = image!
/* The image is now available to us */
//self.addImgToArray(self.photo)
print("enum for image, This is number 2")
})
}
}
}
func FetchCustomAlbumPhotos()
{
让albumName=“人”
var assetCollection=PHAssetCollection()
var=Bool()
var photoAssets=PHFetchResult()
让fetchOptions=PHFetchOptions()
fetchOptions.predicate=NSPredicate(格式:“title=%@”,albumName)
let collection:PHFetchResult=PHAssetCollection.fetchAssetCollections(带:。相册,子类型:。任意,选项:fetchOptions)
如果let:AnyObject=collection.firstObject{
//找到相册了吗
assetCollection=collection.firstObject!
albumFound=true
}
else{albumFound=false}
_=collection.count
photoAssets=PHAsset.fetchAssets(在:assetCollection中,选项:nil)作为!PHFetchResult
让imageManager=PHCachingImageManager()
//让imageManager=PHImageManager.defaultManager()
photoAssets.enumerateObjects{(对象:AnyObject!,
计数:Int,
停止:不可女性化指针)在
如果对象已设置{
设资产=对象为!相集
打印(“如果对象已设置,则为1号”)
让imageSize=CGSize(宽度:asset.pixelWidth,
高度:资源。像素高度)
/*为了获得更快的性能,甚至可能降低图像质量*/
let options=PHImageRequestOptions()
options.deliveryMode=.fastFormat
options.isSynchronous=true
imageManager.requestImage(用于:资产、,
targetSize:imageSize,
contentMode:。aspectFit,
选项:选项,
结果管理员:{
(图像,信息)->在
打印(“图像\(字符串(描述:图像))”)
self.addimgtarray(上传图像:image!)
//self.photo=image!
/*我们现在可以使用该图像*/
//self.addImgToArray(self.photo)
打印(“图像的枚举,这是数字2”)
})
}
}
}
如果我创建了一个相册并将其命名为“test”,我可以获取它,但无法获取我需要的任何内置相册,如“People”。
有什么帮助吗?首先:在任何情况下,您都不应该尝试按标题访问相册;我偷懒时会这样做,但用户可以更改用户相册的标题,因此这是不可靠的。您应该使用标识符
第二:要访问内置智能相册,请使用smartAlbum
类型,并按照@rmaddy的正确建议适当设置子类型
第三:但这对《人物》专辑不起作用。你根本无法访问它
我很确定无法访问“人物”相册是一个bug,如下所述:
当然,我想它可能是故意对你隐瞒的;我不知道。但是恐怕您不能使用该功能。您能解释一下如何设置子类型吗??是否可以提供重复问题的链接?重复问题是一个链接。看到了吗?超越你的问题???