Ios 在UIScrollView中重新定位UIButtons

Ios 在UIScrollView中重新定位UIButtons,ios,uiscrollview,rotation,Ios,Uiscrollview,Rotation,这里没有。各种类似的问题,但仍然无法解决。我在主视图上有一对按钮,在滚动视图中有一对按钮(嵌入主视图)。每对按钮都位于显示屏的两端。滚动视图覆盖显示器的下半部分 当我从纵向旋转到横向时,主视图中的一对按钮将根据其布局约束正确地重新定位在显示器的另一端。但滚动视图中的按钮未正确重新定位。滚动视图本身在横向模式下正确展开(如背景色所示),但按钮不移动。两组按钮具有相同的布局约束。如何使滚动视图中的按钮模仿主视图中的按钮?换句话说,如何在横向模式下将滚动视图中的一对按钮移动到相对的两端 我没有任何自定

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

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


我没有任何自定义代码,一切都是用interface builder完成的。我使用的是iOS 6.1和xcode 4.2

自动布局有点混乱。屏幕旋转后,可以自定义元素的位置。这些是iOS在设备旋转时调用的方法。只需给按钮插座,并在这些方法内部进行调整

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

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
 // do something before rotation
}
如果要在旋转后执行某些操作:

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

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

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


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

谢谢你的快速回复!我希望有一个无代码的解决方案。自动布局功能是否在滚动视图中有缺陷?这是否意味着布局约束在滚动视图中是不相关的(即忽略/取消优先级)?滚动视图是其他视图的容器,因此即使它将旋转,也不会自动旋转其中的内容。