swift开发笔记26 使用xib自定义相机界面

首先创建xib以及一个继承uiview的类,然后在主界面中设置相机的cameraOverlayView 为这个UIview。

创建xib,命名为CameraOverlay


创建类CameraOverlayView,继承UIView

拖个按钮到xib中,并设置xib的custom class:


并把按钮的动作处理函数拖到cameroverlayview中:


把xib的背景色设置为clearColor:


在主界面中,打开相机时,把CameraOverlayView设置为相机的遮罩:

@IBAction func GetPhotoAction(sender: AnyObject) {
        imagePicker =  UIImagePickerController()
        //检测相机是否可用
        let isAvailable = UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)
        //必须首先设置sourceType 然后再设置其他属性 否则会出异常,提示sourceType 必须是 UIImagePickerControllerSourceTypeCamera
        imagePicker.sourceType = .PhotoLibrary
        if isAvailable {
           imagePicker.sourceType = .Camera
            //如果有前置摄像头则调用前置摄像头
            imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.Front
            //是否显示控制栏
            imagePicker.showsCameraControls=false
      
           }
          //自定义相机界面
        let myView = NSBundle.mainBundle().loadNibNamed("CameraOverlay",owner: nil,options: nil).first as? CameraOverlayView
        if myView != nil{
            myView?.imagePicker=imagePicker
            myView?.frame = (imagePicker.cameraOverlayView?.frame)!
            // imagePicker.cameraOverlayView=myView
        }
       
        //代理
        imagePicker.delegate = self 
        //打开相机
        presentViewController(imagePicker,animated: true,completion: {
             self.imagePicker.cameraOverlayView = myView
        })
        //是否可编辑
        imagePicker.allowsEditing=false
       
    }

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...