【问题标题】:Rotating UIViews when screen rotates out of sync屏幕旋转不同步时旋转 UIView
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多