美文网首页Swift专题swift是未来iOS 开发技巧大全
swift 2.0 iOS 8.0 album 保存自定义相册

swift 2.0 iOS 8.0 album 保存自定义相册

作者: ShawnDu | 来源:发表于2015-11-15 22:18 被阅读554次

    using swift 2.0 save photo to custom album

    新建了一个CustomAblum类,写成了单例, 这个写单例的方式是swift中的最好的一种方式:

        static let sharedInstance = CustomAblum()
    

    定义几个变量:

        var assetCollection: PHAssetCollection!
        var albumFound : Bool = false
        var photosAsset: PHFetchResult!
        var collection: PHAssetCollection!
        var assetCollectionPlaceholder: PHObjectPlaceholder!
        static let albumName = "爱拍美图"
    

    在初始化方法中创建自定义相册

    init() {
            self.createAlbum()
        }
    
    private func createAlbum() {
            let fetchOptions = PHFetchOptions()
            fetchOptions.predicate = NSPredicate(format: "title = %@", CustomPhotoAlbum.albumName)
            let collection : PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
            
            if let _: AnyObject = collection.firstObject {
                self.albumFound = true
                assetCollection = collection.firstObject as! PHAssetCollection
            } else {
                PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                    let createAlbumRequest : PHAssetCollectionChangeRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(CustomPhotoAlbum.albumName)
                    self.assetCollectionPlaceholder = createAlbumRequest.placeholderForCreatedAssetCollection
                    }, completionHandler: { success, error in
                        self.albumFound = (success ? true: false)
                        
                        if (success) {
                            let collectionFetchResult = PHAssetCollection.fetchAssetCollectionsWithLocalIdentifiers([self.assetCollectionPlaceholder.localIdentifier], options: nil)
                            print(collectionFetchResult)
                            self.assetCollection = collectionFetchResult.firstObject as! PHAssetCollection
                        }
                })
            }
        }
    

    写一个saveImage方法:

    func saveImage(image: UIImage) {
            if self.assetCollection != nil {
                PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                    let assetChangeRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
                    let assetPlaceholder = assetChangeRequest.placeholderForCreatedAsset
                    let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection)
                    albumChangeRequest?.addAssets([assetPlaceholder!])
                    }, completionHandler: nil)
            }
        }
    

    调用保存时,这样调用:
    CustomPhotoAlbum.sharedInstance.saveImage(image)

    微信公众号

    开发者思维 devthinking

    QQ交流群:295976280

    iOS交流群(一)群二维码.png

    相关文章

      网友评论

      • d0cfdb00029c:如何保存一个视频到自定的相册里面??
      • LostAbaddon:呃。。。最开始为什么用一个引用块?

      本文标题:swift 2.0 iOS 8.0 album 保存自定义相册

      本文链接:https://www.haomeiwen.com/subject/vqukhttx.html