在UIScrollView中重新定位UIButtons

时间:2013-06-24 19:00:28

标签: ios uiscrollview rotation

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

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

我没有任何自定义代码,所有内容都是通过界面构建​​器完成的。我正在使用iOS 6.1和xcode 4.2。

2 个答案:

答案 0 :(得分:0)

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

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

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

如果您想在轮换后执行某些操作:

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

答案 1 :(得分:0)

我解决了这个问题而不需要任何手动代码。我向滚动视图添加了单个内容视图,然后将我的子视图(即UIButtons)添加到内容视图中。

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

成功的秘诀在于布局限制。一旦我完全 - 我的意思是完全 - 理解了这些限制,它就变得非常清晰。