我有一个全屏UIView
。当我旋转手机时,视图会缩小一点(您会看到黑色背景),然后再次展开以全屏显示。它基本上按预期动画。
屏幕上的其他视图也会相应地生成动画。
我可以针对某个特定视图阻止这种情况发生吗? 我希望全屏视图只保持全屏而不显示黑色背景的动画,但保持其他视图为其旋转设置动画。
有点像Apple在相机应用中的表现。 "取景器"不动画它的旋转,但按钮做。
我的ViewController
中有以下代码。 liveView
是提到的全屏UIView
。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animateAlongsideTransition(in: self.liveView, animation: { (context) in
if let connection = (self.liveView.layer as! AVCaptureVideoPreviewLayer).connection {
connection.videoOrientation = AVCaptureVideoOrientation(ui: UIApplication.shared.statusBarOrientation)
}
}, completion: nil)
}
AVCaptureVideoOrentation
是一个扩展程序,基本上会将UIInterfaceOrientation
转换为AVCaptureVideoOrientation
并使用switch
语句。
由于 - 约瑟夫
答案 0 :(得分:0)
您是否尝试过self.liveView.layer.removeAllAnimations()
:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animateAlongsideTransition(in: self.liveView, animation: { (context) in
if let connection = (self.liveView.layer as! AVCaptureVideoPreviewLayer).connection {
connection.videoOrientation = AVCaptureVideoOrientation(ui: UIApplication.shared.statusBarOrientation)
}
self.liveView.layer.removeAllAnimations()
}, completion: nil)
}