屏幕旋转不同步时旋转UIViews

时间:2016-02-21 12:06:12

标签: ios swift uiview uiscrollview

我在屏幕旋转时让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(cutter),覆盖整个视图。然而,旋转有效,因为UIScrollView的内容非常高,覆盖层不会覆盖它的顶部和底部部分,直到覆盖层赶上并旋转以覆盖整个视图。有没有解决方法来解决这个问题?我可以略微延迟滚动视图的旋转吗?任何指针都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

问题是viewWillLayoutSubviews不是用旋转协调动画的正确位置。相反,实现viewWillTransitionToSize:withTransitionCoordinator:并使用它为您提供的转换协调器。这就是它的用途,因此您可以使用过渡协调动画。