设备图片库和照相机是图像的两个重要来源,使用UIKit中提供的图像选择器UIImagePickerController可以轻易地实现从设备图片库和照相机获取图片。
目录 Swift学习笔记4使用UIImagePickerController实现从设备图片库和照相机获取图片 目录 声明协议 创建UIImagePickerController UIImagePickerControllerDelegate委托 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 = .Camera self.presentVIEwController(self.imagePicker,completion: nil)} else{ //d出警告框 let errorAlert = UIAlertController(Title: "相机不可用",message: "",preferredStyle: UIAlertControllerStyle.Alert) let cancelAction = UIAlertAction(Title: "确定",style: UIAlertActionStyle.Cancel,handler: nil) errorAlert.addAction(cancelAction) self.presentVIEwController(errorAlert,completion: nil) }UIImagePickerControllerDelegate委托
取消图片获取:
func imagePickerControllerDIDCancel(picker: UIImagePickerController) { self.imagePicker = nil self.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 = .ScaleAspectFill self.imagePicker.delegate = nil self.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! UIImageiOS 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
总结以上是内存溢出为你收集整理的Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片全部内容,希望文章能够帮你解决Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)