swift PhotoKit学习——swift(学习八)
2016-06-15 14:02
453 查看
PhotoKit是iOS新的框架,用来替代原来AssetsLibrary。所以这里只是大概介绍一下PhotosKit这个框架。
例如:
ok,到了这里我要特别提醒一下了,以上三个拿到的虽然都是PHFetchResult,但是只有获取的所有的相册里返回的PHFetchResult存储的PHAsset。其它的两个存储的都是PHAssetCollection(资源集合),例如我们拿取最基础的PHAsset资源:
接下来,我们就可以使用我们的asset了。
当要展示某个asset的内容时,可以使用PHImageManager,它以异步加载、缓存、自适应等。PHCachingImageManager是它的子类,欲缓存的时候使用:
资源大概就这些了,那么相册的处理,我们有什么操作呢?
主要几个类介绍一下:
PHObject: 所有的PhotoKit对象都继承自PHObject抽象基类; PHAsset: 代表相片库中的一个资源,照片或者视频,是最基础的数据元; PHCollection: 是一个抽象类,它的两个子类:PHAssetCollection:多个asset的集合,比如我们照片库中的一个相册或者一个时刻或者一个视频集合、最近添加项目等;PHCollectionList:有多个asset集合的集合,它自身是一个PHCollection,但是也包涵好几个PHCollection,比如我们在照片应用的时刻栏看到的时刻、精选、年度等,它和PHAssetCollection是没有很大关系的,不需要把它两联系在一起。换句话说,PHAssetCollection内存储的是asset集合,PHCollectionList存储的是多个asset集合的集合; PHAssetCollection: 相当于图片或者视频的collection集 PHFetchOptions: 当我们使用PHAsset、PHCollection、PHAssetCollection、 PHCollectionList等类的类方法去获取资源实例的时候,使用PHFetchOptions的对象描述过滤类型,比如按日期、名称过滤等; PHFetchResult: 获取到的一个有序的资源集合; PHImageManager: 用于管理加载图片或视频; PHImageRequestOptions、PHVideoRequestOptions: 控制加载图片\视频资源时的一些附加参数,比如照片质量、是否联网等;
获取资源
PhotosKit 获取的资源都是通过PHAsset、PHCollection、PHAssetCollection、 PHCollectionList等类形如 class func fetchXX(… , optional:xxx)->PHFetchResult的方法获取。例如:
//获取图库所有资源 let assetOptions = PHFetchOptions() assetOptions.sortDescriptors?.append(NSSortDescriptor(key:"createDate",ascending:true)) let allAssets = PHAsset.fetchAssetsWithOptions(assetOptions) //获取智能相册,所谓智能相册就是苹果手机图库照片模块里的时刻、精选、年度等 let smartAlbums = PHAssetCollection.fetchAssetCollectionsWithType(PHAssetCollectionType.SmartAlbum,subtype:PHAssetCollectionSubtype.AlbumRegular,options:nil) //获取用户自定义相册,自己创建的额相册 let userAblums = PHCollectionList.fetchtopLevelUserCollectionsWithOptions(nil)
ok,到了这里我要特别提醒一下了,以上三个拿到的虽然都是PHFetchResult,但是只有获取的所有的相册里返回的PHFetchResult存储的PHAsset。其它的两个存储的都是PHAssetCollection(资源集合),例如我们拿取最基础的PHAsset资源:
//使用所有相册里的第一个资源: let asset = allAssets.firstObject as! PHAsset //使用smart第一个相册集的第一个资源 let collection = smartAlbums[0] as! PHAssetCollection let phFetchSult = PHAsset.fetchAssetsInAssetCollection(collection,options:nil) let asset = phFetchSult.firstObject as! PHAsset
接下来,我们就可以使用我们的asset了。
当要展示某个asset的内容时,可以使用PHImageManager,它以异步加载、缓存、自适应等。PHCachingImageManager是它的子类,欲缓存的时候使用:
//加载图片 PHImageManager.defaultManager().requestImageForAsset(asset, targetSize:CGSize(width: CGRectGetWidth(self.view.frame)/4, height: CGRectGetWidth(self.view.frame)/4), contentMode: PHImageContentMode.AspectFill, options: nil, resultHandler: { (result, info) in cellItem.setPhotoImage(result!) })
资源大概就这些了,那么相册的处理,我们有什么操作呢?
//创建一个新的相册: PHPhotoLibrary.sharedPhotoLibrary().performChanges({ PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(name!) }, completionHandler: { (success, error) in if !success { print(error) } })
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- JS 相册效果 自动播放[本地整合]
- jquery实现相册一下滑动两次的方法
- 用dom+xhtml+css制作的一个相册效果代码打包下载
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift自定义iOS中的TabBarController并为其添加动画
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- jQuery实现带滚动导航效果的全屏滚动相册实例
- js+css实现上下翻页相册代码分享
- Android App中实现相册瀑布流展示的实例分享
- android照相、相册获取图片剪裁报错的解决方法
- Android相册效果(使用C#和Java分别实现)
- Android利用HorizontalScrollView仿ViewPager设计简单相册
- 简单分析Swift语言的一些基本特征
- 使用 Swift 语言编写 Android 应用入门
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流