swift相册相机的权限处理示例详解
时间:2019-04-07
本文章向大家介绍swift相册相机的权限处理示例详解,主要包括swift相册相机的权限处理示例详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
最近在开发中遇到了获取相册相机权限的需求,通过查找相关的资料终于解决了,因为之后会用到所以决定记录下,下面话不多说了,来一起看看详细的介绍吧。
注意:须先在info.plist
中添加两个keyNSPhotoLibraryUsageDescription, 和NSCameraUsageDescription, 内容填提示内容.
相机
// 使用 self.cameraPermissions(authorizedBlock: { print("打开相机") }, deniedBlock: { print("没有权限使用相机") }) // 相机权限 class func cameraPermissions(authorizedBlock: OperationBlock?, deniedBlock: OperationBlock?) { let authStatus = AVCaptureDevice.authorizationStatus(for: AVMediaType.video) // .notDetermined .authorized .restricted .denied if authStatus == .notDetermined { // 第一次触发授权 alert AVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in self.cameraPermissions(authorizedBlock: authorizedBlock, deniedBlock: deniedBlock) }) } else if authStatus == .authorized { if authorizedBlock != nil { authorizedBlock!() } } else { if deniedBlock != nil { deniedBlock!() } } }
相册
iOS9.0后ALAssetsLibrary过时了, 换成使用PHPhotoLibrary
// 使用 self.photoAlbumPermissions(authorizedBlock: { print("打开相册") }, deniedBlock: { print("没有权限打开相册") }) // 相册权限 class func photoAlbumPermissions(authorizedBlock: OperationBlock?, deniedBlock: OperationBlock?) { let authStatus = PHPhotoLibrary.authorizationStatus() // .notDetermined .authorized .restricted .denied if authStatus == .notDetermined { // 第一次触发授权 alert PHPhotoLibrary.requestAuthorization { (status:PHAuthorizationStatus) -> Void in self.photoAlbumPermissions(authorizedBlock: authorizedBlock, deniedBlock: deniedBlock) } } else if authStatus == .authorized { if authorizedBlock != nil { authorizedBlock!() } } else { if deniedBlock != nil { deniedBlock!() } } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CNS图表复现08—肿瘤单细胞数据第一次分群通用规则
- Gunicorn运行与配置方法
- 如何使用Linux文本操作命令ed进行提权nov5详解
- linux系统用户管理与grep正则表达式示例教程
- 在Linux中如何查找最大的10个文件方法汇总
- CNS图表复现09—上皮细胞可以区分为恶性与否
- CentOS 6/7环境下通过yum安装php7的方法
- Centos7.3服务器搭建LNMP环境的方法
- Linux中解除端口占用的方法
- ubuntu服务器环境下安装python的方法
- 带你入门Linux中size命令的6个例子
- 详解CentOS重启后resolv.conf被重置的解决方案
- scRNA-seq Clustering quality control(二)
- ubuntu环境下安装memcache及启动的方法
- Linux下批量修改服务器用户密码方法步骤