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()
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM