Swift基础(三十三)Photos.framework框架

来源:互联网 发布:淘宝投诉怎么弄 编辑:程序博客网 时间:2024/05/16 17:01
class ViewController: UIViewController {

    var oneImageView: UIImageView?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.view.backgroundColor = UIColor.whiteColor()
        
        // 列出所有系统智能相册
        let smartAlbums: PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(PHAssetCollectionType.SmartAlbum, subtype: .AlbumRegular, options: nil)
        print("智能\(smartAlbums.count)个")
        // smartAlbums中保存的是各个智能相册对应的PHAssetCollection
        for var i in 0 ..< smartAlbums.count {
            // 获取一个相册(PHAssetCollection)
            let collection = smartAlbums[i]
            if collection.isKindOfClass(PHAssetCollection.classForCoder()) {
                // 类型强制转换
                let assetCollection = collection as! PHAssetCollection
                // 从每一个智能相册中获取到的PHFetchResult中包含的才是真正的资源(PHAsset)
                let assetsFetchResults: PHFetchResult = PHAsset.fetchAssetsInAssetCollection(assetCollection, options: nil)
                print("\(assetCollection.localizedTitle)相册,共有照片数:\(assetsFetchResults.count)")
                
                for (var i = 0; i < assetsFetchResults.count; i++) {
                    // 获取一个资源(PHAsset)
                    let asset = assetsFetchResults[i] as! PHAsset;
                }
            }
        }
        
        // 列出用户创建的相册,并获取每一个相册中的PHAsset对象
        let topLevelUserCollection: PHFetchResult = PHCollectionList.fetchTopLevelUserCollectionsWithOptions(nil)
        
        // topLevelUserCollections中保存的是各个用户创建的相册对应的PHAssetCollection
        print("用户创建相册\(topLevelUserCollection.count)个")
        for i in 0 ..< topLevelUserCollection.count {
            // 获取一个相册(PHAssetCollection)
            let collection = topLevelUserCollection[i]
            if collection.isKindOfClass(PHAssetCollection.classForCoder()) {
                // 类型强制转换
                let assetCollection = collection as! PHAssetCollection
                
                // 从每一个智能相册中获取到的PHFetchResult中包含的才是真正的资源(PHAsset)
                let assetsFetchResult: PHFetchResult = PHAsset.fetchAssetsInAssetCollection(assetCollection, options: nil)
                print("\(assetCollection.localizedTitle)相册,共有照片数:\(assetsFetchResult.count)")
                
                for (var i = 0; i < assetsFetchResult.count; i++) {
                    // 获取一个资源(PHAsset)
                    let asset = assetsFetchResult[i] as! PHAsset;
                }
            }
        }
        
        // 获取所有资源的集合,并按资源的创建时间排序
        var assetArray: NSMutableArray?
        let options: PHFetchOptions = PHFetchOptions.init()
        options.sortDescriptors = [NSSortDescriptor.init(key: "creationDate", ascending: true)]
        let assetsFetchResults: PHFetchResult = PHAsset.fetchAssetsWithOptions(options)
        for  (var i = 0; i < assetsFetchResults.count; i++) {
            // 获取一个资源(PHAsset)
            let asset = assetsFetchResults[i] as! PHAsset;
            // 添加到数组
            assetArray?.addObject(asset)
        }
        
        // 获取PHAsset对象中的图片,可以根据不同尺寸来获取
        
        oneImageView = UIImageView(frame: CGRectMake(10, 20, 300, 400))
        self.view.addSubview(oneImageView!)
        /* 屏幕宽度 */
        let screenWidth = UIScreen.mainScreen().bounds.size.width
        /* 屏幕高度 */
        let screenHeight = UIScreen.mainScreen().bounds.height
        // 获取缩略图方法
        func getAssetThumbnail(asset: PHAsset) -> Void {
            // 并获取其中的缩略图
            let manager = PHImageManager.defaultManager()
            let option = PHImageRequestOptions()
            option.synchronous = true
            manager.requestImageForAsset(asset, targetSize: CGSize(width: screenWidth / 4, height: screenHeight / 4), contentMode: .AspectFit, options: option, resultHandler: { (result, info) -> Void in
                self.oneImageView?.image = result
            })
        }
    }
}
0 0
原创粉丝点击