博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift2.0 UIImagePickerController 拍照 相册 录像
阅读量:5889 次
发布时间:2019-06-19

本文共 3301 字,大约阅读时间需要 11 分钟。

系统 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) }

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

转载地址:http://jqysx.baihongyu.com/

你可能感兴趣的文章
iis 故障导致网站无法访问
查看>>
作业抄袭简单检测
查看>>
ASP.NET 回调技术(CallBack)
查看>>
Spark源码分析 – BlockManager
查看>>
JS中的this
查看>>
人生, 不要在别扭的事上纠结
查看>>
C的面向对象编程
查看>>
日志服务器架构设计
查看>>
使用Unity开发Android的几种调试方法
查看>>
C++ 基础笔记(一)
查看>>
编译内核出错:invalid option `abi=aapcs-linux' 解决办法
查看>>
System.Func<>与System.Action<>
查看>>
[翻译] EnterTheMatrix
查看>>
asp.net开源CMS推荐
查看>>
我所思考的生活,致半年后的自己
查看>>
csharp skype send message in winform
查看>>
jQuery plugin: Tablesorter 2.0
查看>>
csharp:datagridview enter Half Width and Full Width characters
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
查看>>