使用iOS中的Photos Framework将video保存到自定义相册
我想使用Photos Framework
将使用自定义相机拍摄的video保存到Photos Library
中的NewAlbum
。 我找到了一些答案,但他们提到了ALAssetsLibrary
的使用,现在已经弃用了。
如果您需要更多详细信息,请告诉我,如果我错过了某些内容,请纠正我。 谢谢
我不确定如何从Video对象创建 PHAsset
,但是当你可以实现这一点时,
我找到了一个解决方案从video创建PHAsset :
代码块1:
PhotoLibrary.shared().performChanges({ let createAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(/*Your url here*/) placeholder = createAssetRequest.placeholderForCreatedAsset identifier = placeholder.localIdentifier }, completionHandler: { success, error in /* Fetch Asset with the identifier here after that, add the PHAsset into an album */ newAsset = PHAsset.fetchAssets(withLocalIdentifiers: [identifier], options: nil).firstObject }
您可以使用以下代码段添加PHAsset
:
代码块2:
PhotoLibrary.shared().performChanges({ guard let addAssetRequest = PHAssetCollectionChangeRequest(for: /*your specific album here as PHAssetCollection*/) else { return } addAssetRequest.addAssets([newAsset] as NSArray) }, completionHandler: { success, error in //handle error or stuff you want to do after that here })
编辑用于创建PHAssetCollection
在这种情况下,我在performChanges(_:,completionHandler:)
闭包中创建了performChanges(_:,completionHandler:)
并将其放入该函数的@escaping
闭包中。
PHPhotoLibrary.shared().performChanges({ let createRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: name) placeHolderIdentifier = createRequest.placeholderForCreatedAssetCollection.localIdentifier }, completionHandler: { success, error in if success { var createdCollection: PHAssetCollection? = nil if placeHolderIdentifier != nil { createdCollection = PHAssetCollection.fetchAssetCollections(withLocalIdentifiers: [placeHolderIdentifier!], options: nil).firstObject } completion(success, createdCollection as? T) } else { LogError("\(error)") completion(success, nil) } })