iOS开发之AssetsLibrary框架使用 一、引言 AssetsLibrary框架是专门用来操作相册相关资源的一个框架,其是iOS4到iOS9之间常使用的一个框架,在iOS9之后,系统系统了 Photos框架代替了AssetsLibrary框架,但是AssetsLibrary框架依然可以使用,并且其结构和设计思路依然值得我们进行分析学习。 二、概述 AssetsLibrary框架会操作系统的相册,因此首先需要进行权限的申请,在使用之前,首先需要在Info.plist文件中添加如下键值: Privacy - Photo Library Usage Description AssetsLibrary框架中核心的类关系如下图所示: ?
,因此 AssetsLibrary 也是本文重点介绍的部分。 2 AssetsLibrary 组成介绍 AssetsLibrary 的组成比较符合照片库本身的组成,照片库中的完整照片库对象、相册、相片都能在 AssetsLibrary 中找到一一对应的组成,这使到 AssetsLibrary 的使用变得直观而方便。 3 AssetsLibrary的基本使用 AssetsLibrary 的功能很多,基本可以分为对资源的获取/保存两个部分,保存的部分相对简单,API 也比较少,因此这里不作详细介绍。 这一点较为容易被忽略,因此建议在使用 AssetsLibrary 的 viewController 中,把 AssetsLibrary 作为一个强持有的 property 或私有变量,避免在枚举出 AssetsLibrary
,因此 AssetsLibrary 也是本文重点介绍的部分。 2 AssetsLibrary 组成介绍 AssetsLibrary 的组成比较符合照片库本身的组成,照片库中的完整照片库对象、相册、相片都能在 AssetsLibrary 中找到一一对应的组成,这使到 AssetsLibrary 的使用变得直观而方便。 3 AssetsLibrary的基本使用 AssetsLibrary 的功能很多,基本可以分为对资源的获取/保存两个部分,保存的部分相对简单,API 也比较少,因此这里不作详细介绍。 这一点较为容易被忽略,因此建议在使用 AssetsLibrary 的 viewController 中,把 AssetsLibrary 作为一个强持有的 property 或私有变量,避免在枚举出 AssetsLibrary
1 概要 在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架。 PhotoKit 是一套比 AssetsLibrary 更完整也更高效的库,对资源的处理跟 AssetsLibrary 也有很大的不同。 主要有三点重要的改进: 从 AssetsLibrary 中获取数据,无论是相册,还是资源,本质上都是使用枚举的方式,遍历照片库取得相应的数据。 在 AssetsLibrary 中,相册和资源是对应不同的对象(ALAssetGroup 和 ALAsset),因此获取相册和获取资源是两个完全没有关联的接口。 PhotoKit 返回资源结果时,同时返回了资源的元数据,获取元数据在 AssetsLibrary 中是很难办到的一件事。
1 概要 在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架。 PhotoKit 是一套比 AssetsLibrary 更完整也更高效的库,对资源的处理跟 AssetsLibrary 也有很大的不同。 主要有三点重要的改进: 从 AssetsLibrary 中获取数据,无论是相册,还是资源,本质上都是使用枚举的方式,遍历照片库取得相应的数据。 在 AssetsLibrary 中,相册和资源是对应不同的对象(ALAssetGroup 和 ALAsset),因此获取相册和获取资源是两个完全没有关联的接口。 PhotoKit 返回资源结果时,同时返回了资源的元数据,获取元数据在 AssetsLibrary 中是很难办到的一件事。
前言 很多自定义播放器,和自定义多选相册的图片都是需要先获取系统图片库中的所有图片资源或者视屏资源 ,所使用的核心方法就是AssetsLibrary框架里的ALAssetsLibrary。 导入系统库.png 封装一个实体model类 #import <AssetsLibrary/AssetsLibrary.h> @interface AlbumVideoInfo : NSObject
功能的进程/System/Library/Frameworks/AssetsLibrary.framework/Support/assetsd crash了。 iOS 8开启了Photos.framework的新时代,而iOS 7及以下开发者只能使用AssetsLibrary的API。 对于小于iOS 8.1的系统都需要同时AssetsLibrary和Photos.framework两套图片API,对于非图片重度的app来说工作量不小。 虽然灵活性比之前AssetsLibrary的获取缩略图API高很多,但是方便程度差了不少,更多的灵活性带了的问题也不少。 6.删除图片的API 在低于iOS 8的系统上,AssetsLibrary没有明确地提供删除图片的接口。
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; // 将视频保存到相册中 [assetsLibrary } }]; [assetsLibrary
具体实现 1.导入头文件** #import <AssetsLibrary/ALAssetsLibrary.h>** 或者 ** @import AssetsLibrary;** 2.实例化AssetsLibrary
具体实现 1.导入头文件** #import <AssetsLibrary/ALAssetsLibrary.h>** 或者 ** @import AssetsLibrary;** 2.实例化AssetsLibrary
示例代码 即,import AssetsLibrary 之后,在 imagePickerController 的方法中,通过 ALAssetsLibrary 的 writeImageToSavedPhotosAlbum
以前的 AssetsLibrary 和现在的 Photos 框架都知道吗?
case savedPhotosAlbum = 2 }复制代码 另外 AssetsLibrary 早在几年前被废弃,如果还在使用 AssetsLibrary 请尽快使用新的 API。
case savedPhotosAlbum = 2 }复制代码 另外 AssetsLibrary 早在几年前被废弃,如果还在使用 AssetsLibrary 请尽快使用新的 API。
viewForZoomingInScrollView:(UIScrollView *)scrollView { return self.imageView; } @end 保存图片到相册 保存图片到相册需要用到的框架 #import <AssetsLibrary /AssetsLibrary.h> // iOS9开始废弃 #import <Photos/Photos.h> // iOS9开始推荐 首先来看一下系统相簿的内容 ? 系统相簿 如果仅仅是将图片保存到系统中相机胶卷相簿中,<AssetsLibrary/AssetsLibrary.h>提供了非常简单的函数。
GitHub:https://github.com/crazycodeboy * Email:crazycodeboy@gmail.com */ #import "Crop.h" #import <AssetsLibrary /AssetsLibrary.h> @interface Crop () @property(strong,nonatomic)NSDictionary*option; @end @implementation
下面看其中几个重要的框架: AssetsLibrary.framework:包含显示用户照片和视频的类。 AudioToolbox.framework:包含处理音频流数据以及播放或录制音频的接口。
kCTCellularDataRestrictedStateUnknown: NSLog(@"Unknown"); break; default: break; } 相册权限--iOS 9.0之前 导入头文件@import AssetsLibrary
kCTCellularDataRestrictedStateUnknown: NSLog(@"Unknown"); break; default: break; } 相册权限--iOS 9.0之前 导入头文件@import AssetsLibrary
相册权限--iOS 9.0之前 导入头文件@import AssetsLibrary; 检查是否有相册权限 ALAuthorizationStatus status = [ALAssetsLibrary