swift2.0 UIImagePickerController 拍照 相册 录像

swift2.0 UIImagePickerController 拍照 相册 录像

系统 ios9.1
语言swift2.0

在app 里最常用的功能就是多媒体选择,首先我们storyboard 创建一个button 用于触发选择事件

@IBAction func selectImageAction(sender: AnyObject) { }

这时候通常会弹出来一个ActionSheet 上面有拍照 , 相册,录像 和取消 这几项。iOS 8 以后actionsheet 和 alertview 都统一用UIAlertController 方法调用,8.3以前actionsheet 有独立的方法 后来都废弃了。首先我们要加入actionsheet 相关delegate 如下

class ViewController: UIViewController ,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UIActionSheetDelegate { }
     @IBAction func selectImageAction(sender: AnyObject) {

      let actionSheetController: UIAlertController = UIAlertController(title: "请选择", message:nil, preferredStyle: .ActionSheet) //取消按钮 let cancelAction: UIAlertAction = UIAlertAction(title: "取消", style: .Cancel) { action -> Void in //Just dismiss the action sheet } actionSheetController.addAction(cancelAction) //拍照 let takePictureAction: UIAlertAction = UIAlertAction(title: "拍照", style: .Default) { action -> Void in [self .initWithImagePickView("拍照")] } actionSheetController.addAction(takePictureAction) //相册选择 let choosePictureAction: UIAlertAction = UIAlertAction(title: "相册", style: .Default) { action -> Void in [self .initWithImagePickView("相册")] } actionSheetController.addAction(choosePictureAction) //摄像 let moviePictureAction: UIAlertAction = UIAlertAction(title: "摄像", style: .Default) { action -> Void in [self .initWithImagePickView("摄像")] } actionSheetController.addAction(moviePictureAction) self.presentViewController(actionSheetController, animated: true, completion: nil) } 

这样我们想要的actionSheet 创建完成
仔细看上面的代码你会发现 [self .initWithImagePickView(“拍照”)]
这个函数,我通过这个函数选择imagePicker 不同的参数
首先创建一个 var imagePicker : UIImagePickerController! 对象
然后实现相关方法

   func initWithImagePickView(type:NSString){

        self.imagePicker = UIImagePickerController() self.imagePicker.delegate = self; self.imagePicker.allowsEditing = true; switch type{ case "拍照": self.imagePicker.sourceType = .Camera break case "相册": self.imagePicker.sourceType = .PhotoLibrary break case "录像": self.imagePicker.sourceType = .Camera self.imagePicker.videoMaximumDuration = 60 * 3 self.imagePicker.videoQuality = .Type640x480 self.imagePicker.mediaTypes = [String(kUTTypeMovie)] break default: print("error") } presentViewController(self.imagePicker, animated: true, completion: nil) } 

swift 可以支持字符串,你也可以尝试其他类型看看!一些方法跟object c 基本一样

下面实现imagepick 的 delegate 方法就可以了
如下
对了如果要引入录制视频功能话别忘记了加
MobileCoreServices.framework 库 和 import MobileCoreServices 头文件

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

        let mediaType = info[UIImagePickerControllerMediaType] as! String let compareResult = CFStringCompare(mediaType as NSString!, kUTTypeMovie, CFStringCompareFlags.CompareCaseInsensitive) //判读是否是视频还是图片 if compareResult == CFComparisonResult.CompareEqualTo { let moviePath = info[UIImagePickerControllerMediaURL] as? NSURL //获取路径 let moviePathString = moviePath!.relativePath if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(moviePathString!) { UISaveVideoAtPathToSavedPhotosAlbum(moviePathString!, nil, nil, nil) } print("视频") } else { print("图片") let image = info[UIImagePickerControllerOriginalImage] as? UIImage self.imageView.image = image; } imagePicker.dismissViewControllerAnimated(true, completion: nil) }

这样一个多媒体选择功能基本实现了!

Demo下载地址

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109166.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • “交通·未来”第19期:面向事件的人流预测以及基于人流的救护车需求预测

    “交通·未来”第19期:面向事件的人流预测以及基于人流的救护车需求预测2020年6月份,公众号正式推出了“交通·未来”系列线上公益学术活动等你来~,2021年,新起航新征程,我们继续前行~3月13日晚上19:00,我们将迎来活动的第19期。1、讲座主题…

    2022年5月15日
  • JAVA–Map集合详解

    JAVA–Map集合详解特点:该集合存储键(key)值(value)对,一对一对往里存,而且要保证键(key)的唯一性。Map集合和Set集合很像,其实Set集合底层就是使用了Map集合。什么时候使用Map集合:当数据之间存在映射关系时,优先考虑Map集合。Map集合常用共有方法1.添加Vput(Kkey,Vvalue):将指定的值与此映射中的指定键关联…

    2022年5月27日
  • 蓝天准系统P750的介绍与开箱

    蓝天准系统P750的介绍与开箱准系统笔记本:准系统笔记本是指使用由工厂(即ODM厂商)采购的标准化笔记本模具,再通过商家或懂技术的玩家安装相兼容的配件(如CPU,显卡,内存,硬盘,光驱,无线网卡,屏幕等)组成的完整笔记本产品。和INTEL于2004年提出的CBB计划有一定相似。2008年的金融危机,使得部分工厂如蓝天、微星向零售商出售模具,准系统笔记本在中国逐渐普及开来。台式DIY装机的人不少,组装笔电的人则不多。对于一个…

    2022年6月14日
  • 【Electronics】数字电路实验——交通灯设计

    【Electronics】数字电路实验——交通灯设计数字电路实验——交通灯设计1.内容摘要2.设计任务及要求3.方案比较方案一:方案二:4.单元电路的工作原理4.1单位时间模块4.2二分频信号产生4.3交通灯控制电路模块4.4倒计时数码管显示模块5.拓展部分:手动设置单位时间模块5.1手动设置二、三分频切换模块5.2手动设置数码管倒计时电路相应的切换6.注意事项7.元器件清单8.参考文献1.内容摘要  &nbsp…

    2022年7月12日
  • SpringBoot——Cache缓存初探

    SpringBoot——Cache缓存初探SpringBoot——Cache缓存初探

    2022年4月23日
  • python自测100题「建议收藏」

    python自测100题「建议收藏」如果你在寻找python工作,那你的面试可能会涉及Python相关的问题。通过对网络资料的收集整理,本文列出了100道python的面试题以及答案,你可以根据需求阅读测试。python基础Q1.什么是Python?Python是一种面向对象的,交互式的,解释型的计算机程序设计语言。Python的设计具有高可读性,它使用英语关键词而非标点符号,语法结构也比其他语言简单。Q2.Py…

    2022年6月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号