swift随手记-摄像头翻转动画

var positionBack:Bool = false
func changeCamera() {
    
    // 摄像头翻转动画
    let animation: CATransition = CATransition.init()
    animation.duration = 1.0
    animation.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseOut)
    animation.type = "oglFlip"

    session.stopRunning()
    //  首先移除所有的 input
    if let  allInputs = session.inputs as? [AVCaptureDeviceInput] {
        for input in allInputs {
            session.removeInput(input)  
        }
    }

    positionBack = !positionBack
    if !positionBack {
        animation.subtype = kCATransitionFromLeft
        videoDevice = cameraWithPosition(position: .front)
    } else {
        animation.subtype = kCATransitionFromRight
        videoDevice = cameraWithPosition(position: .back)
    }
          //  添加翻转动画
    self.view.layer.add(animation, forKey: nil)
    
    //  会话中添加视音频
    if let videoInput = try? AVCaptureDeviceInput(device: videoDevice) {
        session.addInput(videoInput)
    }
    if let videoInput = try? AVCaptureDeviceInput(device: audioDevice) {
        session.addInput(videoInput)
    }
    
    session.startRunning()
}

func cameraWithPosition(position: AVCaptureDevicePosition) -> AVCaptureDevice? {
    //  设置前置或者后置摄像头
    let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo)
    for item in devices as! [AVCaptureDevice] {
        if item.position == position {
            return item
        }
    }
    return nil
}    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容