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

原创 2016年06月01日 14:52:28

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

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

目录

声明协议

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 = .PhotoLibrary
self.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, 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 = 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! 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

版权声明:本文为博主原创文章,转载请注明出处。

swift3.0调用相机和相册 简单实用

swift3.0调用相机和相册 崩溃,在info.plist里加两个字段即可。

ios 使用UIImagePickerController 打开图片库和相机选择图片修改头像(iphone版本)

使用UIImagePickerController打开图片库和相机选择图片修改头像的主要方法如下, 声明:这个是iphone版本的,ipad版本的使用这个不行,因为iPad要用UIPopover才可...

ios 使用UIImagePickerController 打开图片库和相机选择图片修改头像(iphone版本)

转自 http://blog.csdn.net/jinglijun/article/details/8030544 使用UIImagePickerController打开图片库和相机选择图片...

ios 使用UIImagePickerController 打开图片库和相机选择图片修改头像

转自 http://blog.csdn.net/jinglijun/article/details/8030544 - (void)viewDidLoad { [super vi...

JavaScript DOM编程艺术 学习笔记(四)JavaScript 图片库

此例子是实现一个图片库,虽然网页标记代码没有多大,但加上几张图片后用户要下载的数据量就相当可观了。所以 此例中做了以下几件事: 1.保持图片清单list在当前页面 2.保持点击文字链接时不要转到...

JavaScript DOM编程艺术 学习笔记(六)图片库改进版

图片库这个例子 1。符合平稳退化 Fireworks 即使不支持javaScript 浏览器也会打开href属性给的链接 所以符合了平稳退化 而如果用 即选用...

UIImagePickerController之打开图片库和相机选择图片修改头像

1、效果图: 2、主要源代码: - (void)viewDidLoad { [super viewDidLoad]; //获取Documents文件夹目录 ...

swift3.0 Kingfisher图片库 重点源码分析

1. data 根据url这个key存储在 fetchLoads中 // A single key may have multiple callbacks. Only download once. ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片
举报原因:
原因补充:

(最多只允许输入30个字)