使用 PHPhotoLibrary 将照片添加到自定义文件夹还会将照片添加到相机胶卷

Posted

技术标签:

【中文标题】使用 PHPhotoLibrary 将照片添加到自定义文件夹还会将照片添加到相机胶卷【英文标题】:Adding photo to custom folder using PHPhotoLibrary also adds photo to camera roll 【发布时间】:2015-11-18 21:01:27 【问题描述】:

我正在使用 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 )
  


【问题讨论】:

【参考方案1】:

这仍然是正常和预期的行为:用户创建的相册中的照片/视频仅引用了“相机胶卷”中的原件。这个概念从 iOS 5 开始就存在,至今没有改变。

唯一不属于“相机胶卷”的照片/视频是由 iTunes 同步的照片/视频、共享照片流以及使用相机连接套件导入的项目。

【讨论】:

以上是关于使用 PHPhotoLibrary 将照片添加到自定义文件夹还会将照片添加到相机胶卷的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS9 中使用 PHPhotolibrary 将照片保存在带有元数据的相册中?

Swift:将照片添加到自定义相册

如何使用 PHPhotoLibrary 获取照片的日期

CFDictionary 更新到 PHPhotoLibrary kCGImagePropertyExifDictionary 未采取

使用 PHPhotoLibrary 从相机胶卷中获取相机点击的照片

PHPhotoLibrary 获取相册和照片信息