2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

时间:2022-04-01 21:37:43

相关推荐

Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

设备图片库和照相机是图像的两个重要来源,使用UIKit中提供的图像选择器UIImagePickerController可以轻易地实现从设备图片库和照相机获取图片。

目录

Swift学习笔记4使用UIImagePickerController实现从设备图片库和照相机获取图片目录声明协议创建UIImagePickerControllerUIImagePickerControllerDelegate委托UINavigationControllerDelegate协议图片编辑iOS 9 中的新错误

声明协议

UIViewController需声明实现如下两个协议

class viewController: UIViewController , UIImagePickerControllerDelegate , UINavigationControllerDelegate{...}

创建UIImagePickerController

定义一个UIImagePickerController

var imagePicker:UIImagePickerController!

创建一个UIButton,在其IBAction中添加代码

设备图片库:

if self.imagePicker == nil{self.imagePicker = UIImagePickerController()}self.imagePicker.delegate = self//设置图片来源为设备图片库self.imagePicker.sourceType = .PhotoLibraryself.presentViewController(self.imagePicker, animated: true, completion: nil)

照相机:

if UIImagePickerController.isSourceTypeAvailable(.Camera){if self.imagePicker == nil{self.imagePicker = UIImagePickerController()}self.imagePicker.delegate = self//设置图片来源为相机self.imagePicker.sourceType = .Cameraself.presentViewController(self.imagePicker, animated: true, completion: nil)}else{//弹出警告框let errorAlert = UIAlertController(title: "相机不可用", message: "", preferredStyle: UIAlertControllerStyle.Alert)let cancelAction = UIAlertAction(title: "确定", style: UIAlertActionStyle.Cancel, handler: nil)errorAlert.addAction(cancelAction)self.presentViewController(errorAlert, animated: true, completion: nil)}

UIImagePickerControllerDelegate委托

取消图片获取:

func imagePickerControllerDidCancel(picker: UIImagePickerController) {self.imagePicker = nilself.dismissViewControllerAnimated(true, completion: nil)}

完成图片获取:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {//从info中取出获取的原始图片let image = info[UIImagePickerControllerOriginalImage] as! UIImage self.imageView.image = image//设置图片显示模式self.imageView.contentMode = .ScaleAspectFillself.imagePicker.delegate = nilself.dismissViewControllerAnimated(true, completion: nil)}

UINavigationControllerDelegate协议

以下两个协议可以根据需求来选择是否实现

- navigationController:willShowViewController:animated- navigationController:didShowViewController:animated

图片编辑

如果要将原始图片进行编辑如缩放,裁剪等后再使用

则在创建UIImagePickerController时添加:

self.imagePicker.allowsEditing = true

然后将实现UIImagePickerControllerDelegate中的

let image = info[UIImagePickerControllerOriginalImage] as! UIImage

改为

let image = info[UIImagePickerControllerEditedImage] as! UIImage

iOS 9 中的新错误

如果在iOS 9 Xcode 7.1 以上的版本运行可能会报以下错误

_BSMachError: (os/kern) invalid capability (20)_BSMachError: (os/kern) invalid name (15)

解决方法:

打开Info.plist,将Localization native development region中的值由en改为United States

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。