在自定义相机中添加过渡
Add transition in custom camera
我正在实现自定义相机。
一切正常。
我想在从前到后切换时添加过渡,反之亦然。
这是我的代码。
@IBAction func switchCamera(_ sender: Any) {
captureSession.beginConfiguration()
let newDevice = (currentDevice?.position == AVCaptureDevice.Position.back) ? frontCamera : backCamera
for input in captureSession.inputs {
captureSession.removeInput(input as! AVCaptureDeviceInput)
}
let cameraInput:AVCaptureDeviceInput
do {
cameraInput = try AVCaptureDeviceInput(device: newDevice!)
} catch {
print(error)
return
}
if captureSession.canAddInput(cameraInput) {
captureSession.addInput(cameraInput)
}
currentDevice = newDevice
captureSession.commitConfiguration()
}
我想在相机的一侧切换时添加流畅的动画。(类似于我们从一个 ViewController 导航到另一个的方式)。
我该如何实现?
您可以在相机视图后面使用具有清晰背景颜色的 UIView,然后在将相机从后切换到前或反之时向该视图添加过渡。通过声明 UIView 的 @IBOutlet 或以编程方式执行此操作,然后在开关上使用此操作:希望它会有所帮助。
UIView.transition(with: yourView,
duration: 0.5,
options: [.transitionFlipFromRight], // change type accordingly
animations: {
// do your stuff
},
completion: nil)
将您的 ImageCapturingView 替换为 "capturePreviewView"
UIView.transition(with: capturePreviewView, duration: 0.5, options: [.transitionFlipFromLeft, .allowAnimatedContent], animations: nil) { (finished) in
//Code
}
在 mainQueue
中执行任何 UI 更改
我正在实现自定义相机。 一切正常。 我想在从前到后切换时添加过渡,反之亦然。 这是我的代码。
@IBAction func switchCamera(_ sender: Any) {
captureSession.beginConfiguration()
let newDevice = (currentDevice?.position == AVCaptureDevice.Position.back) ? frontCamera : backCamera
for input in captureSession.inputs {
captureSession.removeInput(input as! AVCaptureDeviceInput)
}
let cameraInput:AVCaptureDeviceInput
do {
cameraInput = try AVCaptureDeviceInput(device: newDevice!)
} catch {
print(error)
return
}
if captureSession.canAddInput(cameraInput) {
captureSession.addInput(cameraInput)
}
currentDevice = newDevice
captureSession.commitConfiguration()
}
我想在相机的一侧切换时添加流畅的动画。(类似于我们从一个 ViewController 导航到另一个的方式)。
我该如何实现?
您可以在相机视图后面使用具有清晰背景颜色的 UIView,然后在将相机从后切换到前或反之时向该视图添加过渡。通过声明 UIView 的 @IBOutlet 或以编程方式执行此操作,然后在开关上使用此操作:希望它会有所帮助。
UIView.transition(with: yourView,
duration: 0.5,
options: [.transitionFlipFromRight], // change type accordingly
animations: {
// do your stuff
},
completion: nil)
将您的 ImageCapturingView 替换为 "capturePreviewView"
UIView.transition(with: capturePreviewView, duration: 0.5, options: [.transitionFlipFromLeft, .allowAnimatedContent], animations: nil) { (finished) in
//Code
}
在 mainQueue
中执行任何 UI 更改