【发布时间】:2026-02-08 22:05:03
【问题描述】:
我正在使用 PHPhotoLibrary 创建一个自定义文件夹并在其中添加图片。它工作正常,但我添加到自定义文件夹的图片也添加到“相机胶卷”文件夹中。我找到了这个旧线程Add photos in custom album also added in default Album "Camera Roll",有人说这是正常行为,但是由于评论是3年前的,我想知道在最新的iOS版本中是否有办法只添加图片到自定义文件夹。我已经搜索了一些文档来确认这一点,但没有运气。
我正在使用的代码:
class TMPhotoAlbum {
static let albumName = "Custom Album"
static let sharedInstance = TMPhotoAlbum()
var assetCollection: PHAssetCollection!
init() {
func fetchAssetCollectionForAlbum() -> PHAssetCollection! {
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", TMPhotoAlbum.albumName)
let collection = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
if (collection.firstObject != nil) {
return collection.firstObject as! PHAssetCollection
}
return nil
}
if let assetCollection = fetchAssetCollectionForAlbum() {
self.assetCollection = assetCollection
return
}
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(TMPhotoAlbum.albumName)
}) { success, _ in
if success {
self.assetCollection = fetchAssetCollectionForAlbum()
}
}
}
func saveImage(image: UIImage, completion: (Bool, NSError?) -> Void) {
if assetCollection == nil {
return // If there was an error upstream, skip the save.
}
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
let assetPlaceholder = assetChangeRequest.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection)
albumChangeRequest?.addAssets([assetPlaceholder!])
}, completionHandler: completion )
}
}
【问题讨论】:
标签: ios swift camera-roll phphotolibrary