swift 快速奔跑的兔几 本节的内容是:使用照片库
2015-11-17 09:59
429 查看
除了播放视频和音频之外,iOS和OS X还允许访问内置的相机系统来采集视频和音频。
然而,这两个系统用于访问相机的API是不同的。
要在iOS上从相机采集视频和照片,可以使用一个名为UIImagePickerController的视图控制器。
简言之,UIImagePickerController允许我们呈现一个几乎与iPhone内置相机应用程序完全相同的界面。应用这一个界面,用户可以获取照片,将它作为一个UIImage对象提供给你的应用程序。
还可以配置UIImagePickerController以采集视频。
可以对UIImagePickerController进行设置,用以控制使用哪个相机(前置或后置),闪光灯是否可用,是否允许用户裁剪拍摄的照片等等。
我们可以使用UIImagePickerController来判断有哪些功能可供使用,并相应调整app的行为。例如,要判断是否有任何类型的相机可用:
还可以进一步指定是否有前置或者后置相机可用。
下面的代码是一个简单的应用程序,它将可以显示用户拍摄的照片。注意,该应用程序如果运行在模拟器上,将会无法看到照片。因为模拟器上木有真正的相机设备。
然而,这两个系统用于访问相机的API是不同的。
要在iOS上从相机采集视频和照片,可以使用一个名为UIImagePickerController的视图控制器。
简言之,UIImagePickerController允许我们呈现一个几乎与iPhone内置相机应用程序完全相同的界面。应用这一个界面,用户可以获取照片,将它作为一个UIImage对象提供给你的应用程序。
还可以配置UIImagePickerController以采集视频。
可以对UIImagePickerController进行设置,用以控制使用哪个相机(前置或后置),闪光灯是否可用,是否允许用户裁剪拍摄的照片等等。
我们可以使用UIImagePickerController来判断有哪些功能可供使用,并相应调整app的行为。例如,要判断是否有任何类型的相机可用:
// 判断哪些类型的相机可用 let sourceType = UIImagePickerControllerSourceType.Camera if(UIImagePickerController.isSourceTypeAvailable(sourceType)){ // 可以使用相机 }else{ // 不可以使用相机 }
还可以进一步指定是否有前置或者后置相机可用。
// 前置还是后置相机 let frontCamera = UIImagePickerControllerCameraDevice.Front let rearCamera = UIImagePickerControllerCameraDevice.Rear if(UIImagePickerController.isCameraDeviceAvailable(frontCamera)){ // 前置相机可用 } if(UIImagePickerController.isCameraDeviceAvailable(rearCamera)){ // 后置相机可用 }
下面的代码是一个简单的应用程序,它将可以显示用户拍摄的照片。注意,该应用程序如果运行在模拟器上,将会无法看到照片。因为模拟器上木有真正的相机设备。
class ViewController: UIViewController ,UIImagePickerControllerDelegate,UINavigationControllerDelegate{ @IBAction func takePhotos(sender: AnyObject) { let picker = UIImagePickerController() // 判断哪些类型的相机可用 let sourceType = UIImagePickerControllerSourceType.Camera if(UIImagePickerController.isSourceTypeAvailable(sourceType)){ picker.sourceType = UIImagePickerControllerSourceType.Camera // 前置还是后置相机 let frontCamera = UIImagePickerControllerCameraDevice.Front let rearCamera = UIImagePickerControllerCameraDevice.Rear if(UIImagePickerController.isCameraDeviceAvailable(frontCamera)){ // 前置相机可用,使用前置相机 picker.cameraDevice = frontCamera }else{ // 使用后置相机 picker.cameraDevice = rearCamera } picker.delegate = self self.presentViewController(picker, animated: true, completion: { () -> Void in // nil }) } } @IBOutlet weak var imageView: UIImageView! func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { let image:UIImage = info[UIImagePickerControllerOriginalImage] as! UIImage self.imageView.image = image picker.dismissViewControllerAnimated(true, completion: nil) } func imagePickerControllerDidCancel(picker: UIImagePickerController) { picker.dismissViewControllerAnimated(true, completion: nil) } }
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS中内存管理那些事