Photos 获取设备相册数据⑤

(Swift)
第一步准备:

import Photos    //导入Photos库
PHPhotoLibraryChangeObserver    //签订协议
func photoLibraryDidChange(changeInstance: PHChange) {}  //实现协议方法,第一次获取相册信息时进入(可在其中调用第二步)

第二步获取:

//  注册通知
  PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
//  获取所有系统图片信息集合体
  let allOptions = PHFetchOptions()
//  对内部元素排序(根据key可以看出这里是按照时间由远到近排序)
  allOptions.sortDescriptors = [NSSortDescriptor.init(key: "creationDate", ascending: true)]
//  将元素集合拆解开,此时 allResults 内部是一个个的PHAsset单元
  let allResults = PHAsset.fetchAssetsWithOptions(allOptions)
// 遍历 allResults , 将视频和图片数据分开
  for i in 0..

下面这几个方法的执行环境 : asychronously on the main thread (主线程异步执行)
可先设置默认的 image 和 size 。

设置图片的 image 和 size :

 // libraryArrPhotos 设备相册中的图片数组
PHCachingImageManager.defaultManager().requestImageForAsset(libraryArrPhotos[indexPath.row] , 
                    targetSize: CGSizeZero, contentMode:
                    .AspectFit, options: nil)
    { (result: UIImage?, dictionry: Dictionary?) in   
           // 获取图片
           cell.cellImage.image = result 
    }

PHCachingImageManager.defaultManager().requestImageDataForAsset(libraryArrPhotos[indexPath.row], options: nil, resultHandler:
     { (data, string, orientation, object) in
            //  获取图片的大小(单位为B)
            var imageSize = Float(data!.length)    
      })
```
**设置视频的 image 和 size :**
```
 // libraryArrVedios 设备相册中的视频数组
PHCachingImageManager.defaultManager().requestImageForAsset(libraryArrVedios[indexPath.row] , targetSize: CGSizeZero, contentMode:
                    .AspectFit, options: nil)
      { (result: UIImage?, dictionry: Dictionary?) in
             // 获取视频截图       
             cell.cellImage.image = result 
      }

PHCachingImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler:
       { (asset, audioMix, info) in
             //  获取视频的大小(单位为B)
             let urlAsset = asset as! AVURLAsset
             let data = NSData.init(contentsOfURL: urlAsset.URL)
             let size = data?.length
       }
```

你可能感兴趣的:(Photos 获取设备相册数据⑤)