【问题标题】:Repositioning UIButtons in UIScrollView在 UIScrollView 中重新定位 UIButton
【发布时间】:2013-06-24 19:00:28
【问题描述】:

这里是菜鸟。关于 SO 的各种类似问题,但仍然无法弄清楚。我在主视图上有一对按钮,在滚动视图中有一对按钮(嵌入在主视图中)。每对按钮位于显示器的相对两端。滚动视图覆盖了显示屏的下半部分。

当我从纵向旋转到横向时,主视图中的一对按钮会根据它们的布局约束正确地重新定位在显示器的两端。但是滚动视图中的按钮没有正确重新定位。滚动视图本身在横向模式下正确展开(如背景颜色所示),但按钮不会移动。两组按钮具有相同的布局约束。如何使滚动视图中的按钮模仿主视图中的按钮?换句话说,如何在横向模式下将滚动视图中的一对按钮移动到相反的两端?

我没有任何自定义代码,一切都是通过界面生成器完成的。我正在使用 iOS 6.1 和 xcode 4.2。

【问题讨论】:

    标签: ios uiscrollview rotation


    【解决方案1】:

    自动布局往往有点令人困惑。屏幕旋转后,您可以自定义元素的位置。这些是 iOS 将在设备旋转时调用的方法。只需给按钮插座并在这些方法中调整它们

    如果在旋转之前,从 UIViewController 覆盖:

    - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
    {
     // do something before rotation
    }
    

    如果你想在旋转后执行一些操作:

    - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
    {
     // do something after rotation
    }
    

    【讨论】:

    • 感谢您的快速回复!我希望有一个无代码的解决方案。滚动视图中缺少自动布局功能吗?这是否意味着布局约束在滚动视图中是不相关的(即忽略/取消优先级)??
    • 滚动视图是其他视图的容器,所以即使它会旋转,它也不会自动旋转里面的东西。
    【解决方案2】:

    我无需任何手动代码即可解决问题。我将单个内容视图添加到滚动视图,然后将我的子视图(即 UIButtons)添加到内容视图。

    我通过添加高度约束来固定内容视图的高度,将内容视图的左侧、顶部和右侧锚定到滚动视图(没有锚定底部以防止内容视图在横向模式下缩小)。此外,将滚动视图(左、上、右和下)锚定到其父视图,以确保它在横向模式下正确地缩小高度并扩大宽度。

    成功的秘诀在于布局限制。一旦我完全——我的意思是完全——理解了这些限制,一切就变得一清二楚了。

    【讨论】:

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