zoukankan      html  css  js  c++  java
  • 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()
            }
        }
  • 相关阅读:
    mass Framework event模块 v9
    关于开源的网络爬虫/网络蜘蛛larbin结构分析
    socketaddr和socketaddr_in的区别于联系
    C语言中.h和.c文件解析
    [原]变参函数原理详解
    fopen和open有什么区别?
    C语言的那些小秘密之变参函数的实现
    c语言中逗号运算符和逗号表达式
    关于REST API设计的一些小经验
    Linux信号说明列表
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/6444346.html
Copyright © 2011-2022 走看看