1. 程式人生 > >swift3.0自定義相機介面

swift3.0自定義相機介面

這是公司上上上一個專案的自定義相機介面,原來是swift2.0寫的,今天改為swift3.0,記錄一下.

效果圖如下:

                                                                                                                                                                                                                      

使用AVFoundation製作.

屬性:

複製程式碼

 1     var device:AVCaptureDevice!   //獲取裝置:如攝像頭
 2     var input:AVCaptureDeviceInput!   //輸入流
 3     var photoOutput:AVCaptureStillImageOutput! //輸出流
 4     var  output:AVCaptureMetadataOutput! //當啟動攝像頭開始捕獲輸入
 5     var  session:AVCaptureSession!//會話,協調著intput到output的資料傳輸,input和output的橋樑
 6     var  previewLayer:AVCaptureVideoPreviewLayer! //影象預覽層,實時顯示捕獲的影象
 7     
 8     var photoButton: UIButton?   //拍照按鈕
 9     var imageView: UIImageView?   //拍照後的成像
10     var image: UIImage?   //拍照後的成像
11     var isJurisdiction: Bool?   //是否獲取了拍照標示
12     var flashBtn:UIButton?  //閃光燈按鈕

複製程式碼

在viewDidLoad裡面判斷下許可權,沒給許可權給個提示

複製程式碼

        isJurisdiction = canUserCamear()
        if isJurisdiction! {
            customCamera()  //自定義相機
            customUI()  //自定義相機按鈕
        }
        else {
            return
        }

複製程式碼

複製程式碼

    // MARK: - 檢查相機許可權
    func canUserCamear() -> Bool {
        let authStatus: AVAuthorizationStatus = AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo)
        if authStatus == .denied {
            let alertView = UIAlertView(title: "請開啟相機許可權", message: "設定-隱私-相機", delegate: self, cancelButtonTitle: "確定", otherButtonTitles: "取消")
            alertView.tag = 100
            alertView.show()
            return false
        }
        else {
            return true
        }
        return true
    }

複製程式碼

自定義相機:

 View Code

自定義相機介面按鈕:拍照,取消,閃光燈,前後拍照切換按鈕

 View Code

拍照按鈕點選事件:

 View Code

閃光燈切換事件:

 View Code

取消按鈕點選事件:

    //MARK:取消按鈕
    func cancelActin(){
        self.imageView?.removeFromSuperview()
        self.session.startRunning()
    }

github原始碼地址:https://github.com/pheromone/swift_custom_camera