ios - 在一个特定的 UIView 旋转时防止动画

标签 ios swift animation uiview rotation

我有一个全屏 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

谢谢 ——约瑟夫

最佳答案

您是否尝试过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/

相关文章:

json - AlamoFire responseJSON 十进制精度

Xcode - 编程时出现黑屏

ios - 从链接打开应用程序时,appsflyer 深度链接不起作用(未调用委托(delegate)方法)

objective-c - 如果您不在 Objective-C 中的应用程序中,如何将窗口置于最前面

jQuery - 单击时在函数之间切换

ios - 越狱设备上的调试服务器

c++ - Cocos2d-x 4.0 Lens3D和Waves3D动画

objective-c - 暂停 Objective-C 运行时循环以获取用户输入

ios - 以编程方式打开 FaceTime,无需任何数字或苹果 ID - iOS8

animation - 加载时动画 D3 圆环图