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]