【发布时间】:2016-02-21 12:06:12
【问题描述】:
当屏幕旋转时,我在让 UIViews 正确旋转时遇到问题。我正在重置 viewWillLayoutSubviews 中各种元素的框架:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
//This a transparent black overlay
cutterView.frame = view.frame
scrollView.center = view.center
label.frame.origin = CGPoint(x: cutterView.frame.size.width/2 - label.frame.size.width/2, y: 10)
okButton.frame.origin = CGPoint(x: cutterView.frame.size.width - okButton.frame.size.width - 12, y: 5)
backButton.frame.origin = CGPoint(x: 10, y: -7)
}
UIScrollView 的 clipToBounds 设置为 false。当面向横向时,我的内容比屏幕高。我有一个覆盖整个视图的黑色透明 UIView (cutterView)。然而,旋转是有效的,因为 UIScrollView 的内容非常高,它的顶部和底部不会被覆盖层覆盖,直到覆盖层赶上并旋转以覆盖整个视图。有什么解决方法可以解决这个问题吗?我可以稍微延迟滚动视图的旋转吗?任何指针将不胜感激。谢谢!
【问题讨论】:
-
viewWillLayoutSubviews不是协调动画与旋转的正确位置。 -
最好的地方在哪里?是否可以为 UIDeviceOrientationDidChangeNotification 注册通知并在那里进行?
-
实现
viewWillTransitionToSize:withTransitionCoordinator:并使用转换协调器。这就是它的用途,因此您可以协调过渡。 -
@matt 谢谢队友。只是调查了一下,让它工作了。
-
酷!我会把我的 cmets 变成一个答案,这样我们就可以完成这个故事。
标签: ios swift uiview uiscrollview