重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ios是没法打开小米相册的,小米相册是小米手机自带,ios系统也没法使用。
目前创新互联已为千余家的企业提供了网站建设、域名、网页空间、网站托管、企业网站设计、崇义网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
在当前控制器中使用UIImagePickerController, 并实现UIImagePickerControllerDelegate 中的协议方法就可以访问相册。
使用系统相册的时候,首先判断是否有权限,没有权限的话,可以弹出提示框。
相册监听中的回调方法是在 子线程 中的,因此要改变UI布局的话,必须回到主线程
** 几个常用的类 **
**PHAsset **: 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源。每个PHAsset就是一张图片的详细信息,包括图片、位置、时间等。
** PHFetchOptions **: 获取资源时的参数,可以传 nil,即使用系统默认值。
** PHFetchResult **: 表示一系列的资源集合,也可以是相册的集合。
** PHAssetCollection **: 表示一个相册或者一个时刻,或者是一个智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表,收藏等等)。
** PHImageManager **: 用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个 PHImageRequestOptions 控制资源的输出尺寸等规格。
** PHImageRequestOptions **: 如上面所说,控制加载图片时的一系列参数。
调用相机拍照并获取图片和打开系统相册获取图片是我们经常见到的常用功能。其实这些功能做起来十分简单,几步即可。
在info.plist文件中添加对照相机和相册获取的权限,如下图
初始化UIImagePickerController ,并添加相应设置,如下
需要添加UIImagePickerControllerDelegate和UINavigationControllerDelegate这两个代理,并在代理中实现相应方法,如下
根据不同的需求设置类型即可,如下:
创建工程项目和视图控制器
创建一个single view工程项目,自动创建一个ViewController试图控制器。
创建并初始化UI控件
在ViewController.m创建并初始化UIImageView用于显示获取的图片,UIButton及响应事件。
设置宏定义、添加代理
判断是否是iOS8以上版本系统:
#define IOS8 ([[[UIDevice currentDevice] systemVersion] floatValue] = 8.0 ? YES : NO)
调用相册需要使用:
UIImagePickerControllerDelegate,UINavigationControllerDelegate代理,iOS7使用UIActionSheet需要添加UIActionSheetDelegate。
完善按钮响应事件
iOS8使用UIAlertController选择获取图片方式;
iOS8使用UIAlertAction选择获取图片方式。
添加自定义方法保存图片到本地沙盒
选择完成后调用。
获取图片缓存并显示
完成示例
要允许app调用相机,读取相册图片。