菜鸟教程小白 发表于 2022-12-11 17:19:34

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


                                            <p><p>我有一个全屏 <code>UIView</code>。当我旋转手机时, View 会缩小一点(您会看到黑色背景),然后再次扩展为全屏。它基本上按预期动画。
屏幕上的其他 View 也会相应地进行动画处理。</p>

<p>我可以防止这种情况发生在一个特定的 View 中吗?
我希望全屏 View 保持全屏状态而没有动画显示黑色背景,但保持其他 View 为其旋转设置动画。</p>

<p>有点像 Apple 在相机应用中的做法。 “取景器”不会为其旋转设置动画,但按钮可以。 </p>

<p>我的 <code>ViewController</code> 中有以下代码。 <code>liveView</code> 就是提到的全屏<code>UIView</code>。 </p>

<pre><code>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)

}
</code></pre>

<p><code>AVCaptureVideoOrentation</code> 是一个扩展,它基本上使用 <code>switch</code> 语句将 <code>UIInterfaceOrientation</code> 转换为 <code>AVCaptureVideoOrientation</code>。</p>

<p>谢谢
- 约瑟夫</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你试过<code>self.liveView.layer.removeAllAnimations()</code>:</p>

<pre><code>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)

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 防止在一个特定的 UIView 旋转时出现动画,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/39062731/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/39062731/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 防止在一个特定的 UIView 旋转时出现动画