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

猜你喜欢

转载自blog.csdn.net/yiyihuazi/article/details/84541561