我有一个全屏 UIView 。当我旋转手机时, View 会缩小一点(您会看到黑色背景),然后再次扩展为全屏。它基本上按预期动画。
屏幕上的其他 View 也会相应地进行动画处理。
我可以防止这种情况发生在一个特定的 View 中吗?
我希望全屏 View 保持全屏状态而没有动画显示黑色背景,但保持其他 View 为其旋转设置动画。
有点像 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 是一个扩展,它基本上使用 switch 语句将 UIInterfaceOrientation 转换为 AVCaptureVideoOrientation 。
谢谢
- 约瑟夫
Best Answer-推荐答案 strong>
你试过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)
}
关于ios - 防止在一个特定的 UIView 旋转时出现动画,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/39062731/
|