我正在尝试使用自定义过渡到全屏自定义相机。当我使用缓慢淡入淡出的动画时,它在完成动画后会变成黑色。
在动画开始时似乎起作用的摄像机, 突然消失,留下黑色背景。
如何使过渡正常工作?
代码:
mainVC:
@objc func buttonUp(_ sender: UIButton) {
toCam.transform = CGAffineTransform.identity.scaledBy(x: 1, y: 1)
toCam.backgroundColor = .yellow
segue()
}
func segue() {
performSegue(withIdentifier: "GoToCam", sender: self)
}
自定义搜索类别:
class goToCamAnimCustom: UIStoryboardSegue {
override func perform() {
scale()
}
func scale() {
guard let destinationView = self.destination.view else {
// Fallback to no fading
self.source.present(self.destination, animated: false, completion: nil)
return
}
destinationView.alpha = 0
self.source.view?.addSubview(destinationView)
UIView.animate(withDuration: CATransaction.animationDuration(), animations: {
destinationView.alpha = 0.5
}, completion: { _ in
self.source.present(self.destination, animated: false, completion: nil)
})
}
}
答案 0 :(得分:1)
正如评论中提到的 @Gero 一样,问题在于customSegues无法与AVFoundation摄像机配合使用。特别是在您的自定义设置中,还会出现逻辑错误,可能会干扰摄像机设置。
无论如何,我将转向modalTransitionStyles或自定义过渡动画。 对于模式过渡样式:
var storyboard = UIStoryboard(name: "Main", bundle: nil)
var loginViewController = storyboard.instantiateViewController(withIdentifier: "toCam")
loginViewController.modalTransitionStyle = .crossDissolve
self.present(loginViewController, animated: true, completion: nil)
有关过渡动画,请参考以下问题: Custom Flip Segue in Swift