Swift3.0:照片选择

一、介绍

图片选择或者拍照功能:

1、选择相册中的图片或是拍照,都是通过UIImagePickerController控制器实例化一个对象,然后通过self.presentViewController方法推出界面显示。但是使用presentViewController的类需要实现UIImagePickerControllerDelegate、UINavigationController两个代理。

2、UIImagePickerController可以通过isSourceTypeAvailable方法来判断设备是否支持照相机/图片库/相册功能。如果支持,可以通过sourceType属性来设置图片控制器的显示类型。类型一共分为3种:PhotoLibrary(照片库)、Camera(相机)、SavedPhotoAlbum(相册)

3、实现协议截图

二、实例

1、使用相册选择步骤:

  • 判断是否支持要使用的图片库或相册功能
  • 初始化图片控制器对象
  • 指定图片控制器对象的代理
  • 指定图片控制器的类型,前提是必须先导入MobileCoreServices.framework框架
  • 弹出显示图片控制器
  • 实现图片控制住器代理方法
 func chooseImageFromAlbum(){

        //判断是否支持要使用的图片库
        if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {

            //初始化图片控制器
            let picker = UIImagePickerController()

            //设置代理
            picker.delegate = self

            //设置媒体类型
            picker.mediaTypes = [kUTTypeImage as String,kUTTypeVideo as String]

            //设置允许编辑
            picker.allowsEditing = true

            //指定图片控制器类型
            picker.sourceType = .photoLibrary

            //弹出控制器,显示界面
            self.present(picker, animated: true, completion: nil)
        }
        else{

            let alert = UIAlertView.init(title: "读取相册错误!", message: nil, delegate: nil, cancelButtonTitle: "确定")
            alert.show()
        }
    }

 //实现图片控制器代理方法
 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        //查看info对象
        print(info)

        //获取选择的原图
        let originImage = info[UIImagePickerControllerOriginalImage] as! UIImage

        //赋值,图片视图显示图片
        self.pickerView.image = originImage

        //图片控制器退出
        picker.dismiss(animated: true, completion: nil)
    }

    //取消图片控制器代理
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {

        //图片控制器退出
        picker.dismiss(animated: true, completion: nil)
    }

2、拍照步骤:

  • 判断是否支持拍照功能
  • 初始化图片控制器对象(可以设置是否允许编辑)
  • 指定图片控制器对象的代理
  • 指定图片控制器的类型
  • 弹出显示图片控制器
func takePhotoFromCamera() {

        //判断是否支持相机
        if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {

            //初始化图片控制器
            let picker = UIImagePickerController()

            //设置代理
            picker.delegate = self

            //设置媒体类型
            picker.mediaTypes = [kUTTypeImage as String,kUTTypeVideo as String]

            //设置来源
            picker.sourceType = UIImagePickerControllerSourceType.camera

            //设置镜头 front:前置摄像头  Rear:后置摄像头
            if UIImagePickerController.isCameraDeviceAvailable(UIImagePickerControllerCameraDevice.front) {
                picker.cameraDevice = UIImagePickerControllerCameraDevice.front
            }

            //设置闪光灯(On:开、Off:关、Auto:自动)
            picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.on

            //允许编辑
            picker.allowsEditing = true

            //打开相机
            self.present(picker, animated: true, completion: nil)
        }
        else{

            let alert = UIAlertView.init(title: "找不到相机!", message: nil, delegate: nil, cancelButtonTitle: "确定")
            alert.show()
        }
    }
时间: 2024-12-31 14:02:02

Swift3.0:照片选择的相关文章

Swift2.3 --> Swift3.0 的变化

Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcode帮我们把Swift2.3的代码转换为Swift3.0. 手动调出Xcode自动转换Swift2.3 到 Swift3.0 弹出语言版本选择界面,选择Covert to Swift3,Next:  进入选择模块界面: 选择模块界面 建议只选择自己创建的模块,第三方框架的模块最好不要使用Xco

使用 swift3.0高仿新浪微博

项目地址:https://github.com/SummerHH/swift3.0WeBo 使用 swift3.0 高仿微博,目前以实现的功能有,添加访客视图,用户信息授权,首页数据展示(支持正文中连接匹配,@匹配)支持照片浏览,大图浏览,保存图片到相册本地, 实现发布微博,发微博添加照片,发送Emoticon表情等功能, 先看下项目整体框架 项目使用 MVC 框架,但是在写的过程中也用到了 MVVM设计模式

iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)

今天博客中,我们就来实现一下一些常用资讯类App中常用的分类选择的控件的封装.本篇博客中没有使用到什么新的技术点,如果非得说用到了什么新的技术点的话,那么勉强的说,用到了一些iOS9以后UICollectionView添加的一些新的特性.本篇博客所涉及的技术点主要有UICollectionView的Cell移动,手势识别,控件封装,闭包回调,面向接口编程,Swift中的泛型等等.这些技术点在之前的博客中也多次使用到,只不过本篇博客使用这些技术点来完成我们的具体需求. 一.实例运行效果 先入为主,

Swift2.3适配Swift3.0时出现的各种问题

昨晚上一波手贱把我的小5s升到iOS10.如此配套的话,Xcode7.3升级Xcode8.1看来也是势在必行了.公司程序是Swift2.3的,出于对苹果的恐惧迟迟不敢升级.但丑媳妇儿总要见公婆,借这个机会,也趁双休时间,做一下适配好了. 首先,强调一点.做好备份!做好备份!做好备份!重要的事情说三遍. 1.关于使用的Swift代码库的问题 这是我最心力交瘁的一个问题. 项目中使用了Swift的几个开源框架,SwiftHTTP.SwiftyJSON.KingFisher等等.我的项目并没有使用Co

详解 swift3.0 和 OC 的混编

前言: 我们在一些情况下,仅仅使用swift 是无法完成一个项目的,在swift项目中必要用到 OC 实现一些功能,比如,项目要使用一些第三方的框架,但这个第三方的框架却是用 OC 实现的,或者你的项目必须调用原有项目的部分功能,而原来的项目也是用 OC 实现的.在这样的一些背景下,你就必须要实现这两种语言的混编.反过来也一样,比如开发者打算用swift实现一些新的功能要用到三方框架,而人家是使用swift写的,而你的项目确实OC的,这时候你也得实现一个混编.下面我们分两种情况分别说明一些. 一

ios开发——实用技术篇Swift篇&照片选择

照片选择 1 // MARK: - 选择照片 2 /*----- 选择照片 ------*/ 3 @IBAction func addImageButtonClick() 4 { 5 let actionSheet = UIActionSheet(title: "请选择", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: "从相

(细节控)swift3.0与融云IMKIT开发问题(一部分) override func onSelectedTableRow Method does not override any method from its superclass

原官网文档方案如下,在swift3.0的情况下出现 override func onSelectedTableRow  Method does not override any method from its superclass 这是因为swift3.0 有很多变更,需要更换下onSelectedTableRow参数. //重写RCConversationListViewController的onSelectedTableRow事件 override func onSelectedTableR

使用的一些支持swift3.0的开源库

#解决键盘弹起遮挡工具 pod 'IQKeyboardManagerSwift', '~>4.0.6' #多种类型弹出框 pod 'SCLAlertView', :git => 'https://github.com/vikmeup/SCLAlertView-Swift' # Alamofire 网络库 (4.1.0最低支持iOS8.0,4.0最低支持iOS9.0) pod 'Alamofire', '~> 4.0' # swift解析json库 pod 'SwiftyJSON', :g

Swift3.0 函数闭包与OC Block

刚接触Swift,如有不对的点,欢迎指正.转载请说明出处 Swift中定义一个基本函数 //定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> String { return ("输出了\(name)") } //通用形式 func name(parameters) -> return type { function body } Swift 中基本的闭包函数与OC中Block的相似点 带参闭包 //OC中Bloc

swift3.0:CoreData的使用

一.介绍 CoreData不像slqite3那样编写代码繁琐,同时避免了使用了SQL语句的麻烦,也可以回避使用C语言的语法,降低了iOS开发的技术门槛. CoreData可降低开发成本,提高代码质量.它是一个完全面向对象的API,能够合理管理内存,负责在数据库中存储数据,底层也是由类似 于SQL的技术实现的.CoreData是持久化存储的最佳方式,数据最终的存储类型可以是SQLite数据库.XML.二进制.内存或自定义数据类型 它和SQLite的区别是:只能取出整个实体记录,然后分离,之后才能得