Swift - how to get last taken 3 photos from photo library?

前端 未结 5 1445
独厮守ぢ
独厮守ぢ 2020-12-04 08:42

I need to get and show last taken 3 photos from photo library on viewDidload event without any clicks.

After this step, I should get other photos 3 by 3

5条回答
  •  温柔的废话
    2020-12-04 09:30

    You can extract the 3 latest photos using functions in the AssetsLibrary framework. First you have to add the framework to the project. The following function retrieves the 3 latest photos and calls the completion block.

    import AssetsLibrary
    
    func getLatestPhotos(completion completionBlock : ([UIImage] -> ()))   {
        let library = ALAssetsLibrary()
        var count = 0
        var images : [UIImage] = []
        var stopped = false
    
        library.enumerateGroupsWithTypes(ALAssetsGroupSavedPhotos, usingBlock: { (group,var stop) -> Void in
    
            group?.setAssetsFilter(ALAssetsFilter.allPhotos())
    
            group?.enumerateAssetsWithOptions(NSEnumerationOptions.Reverse, usingBlock: {
                (asset : ALAsset!, index, var stopEnumeration) -> Void in
    
                if (!stopped)
                {
                    if count >= 3
                    {
    
                        stopEnumeration.memory = ObjCBool(true)
                        stop.memory = ObjCBool(true)
                        completionBlock(images)
                        stopped = true
                    }
                    else
                    {
                        // For just the thumbnails use the following line.
                        let cgImage = asset.thumbnail().takeUnretainedValue()
    
                        // Use the following line for the full image.
                        let cgImage = asset.defaultRepresentation().fullScreenImage().takeUnretainedValue()
    
                        if let image = UIImage(CGImage: cgImage) {
                            images.append(image)
                            count += 1
                        }
                    }
                }
    
            })
    
            },failureBlock : { error in
                println(error)
        })
    }
    

    The above function can be called like this

    getLatestPhotos(completion: { images in
         println(images)
         //Set Images in this block.
    })
    

提交回复
热议问题