Ios 纵向布局不会横向滚动

Ios 纵向布局不会横向滚动,ios,interface-builder,Ios,Interface Builder,我对XCode和Interface Builder很陌生,所以如果解决方案显而易见,请原谅我 我在interface builder(XCode 5)中设计了一个漂亮的IPhone纵向视图,并对每个元素(标签、文本视图、开关、按钮等)设置了约束,以便它们在模拟器中以3.5或4英寸portait模式正确定位 然而,当我将模拟器旋转到横向时,它打破了设计,元素相互重叠,其他元素消失(从视图中剪掉)——我预料到了这一点 我的解决方案是将所有UI元素放在UIScrollView中,并在scroll视图上

我对XCode和Interface Builder很陌生,所以如果解决方案显而易见,请原谅我

我在interface builder(XCode 5)中设计了一个漂亮的IPhone纵向视图,并对每个元素(标签、文本视图、开关、按钮等)设置了约束,以便它们在模拟器中以3.5或4英寸portait模式正确定位

然而,当我将模拟器旋转到横向时,它打破了设计,元素相互重叠,其他元素消失(从视图中剪掉)——我预料到了这一点

我的解决方案是将所有UI元素放在UIScrollView中,并在scroll视图上设置约束,以便它以portait或横向模式填充屏幕

完成此操作后,在模拟器中,纵向视图与以前一样,但在横向视图中,没有任何内容滚动,并且我的UI元素都不遵守它们的约束(水平拉伸等)。我仍然丢失底部的UI,我无法将其滚动到视图中

我认为将所有内容放入scroll视图将简单地“修复”这个问题,但scroll视图似乎完全没有任何作用。我在interface builder中修改了各种设置,但没有解决这个问题

对于这种基于代码的场景,似乎有很多冗长的解决方案,但这种简单而常见的解决方案肯定会“奏效”


我遗漏了什么,或者我做错了什么,或者简单的滚动真的需要大量编码才能工作吗

将所有元素放在滚动视图中并不能真正解决任何问题。这些元素仍然需要约束才能知道如何在滚动视图中定位它们自己。您也需要小心,因为这个解决方案听起来像是违反了苹果的人机界面准则。我建议不要忽视这些,因为众所周知苹果拒绝这样做的应用程序

我想说的是,如果元素覆盖了其他元素,并且在旋转时移动到错误的位置,那么您的约束就是没有正确设置

令人恼火的是,开发者网站的WWDC视频部分仍处于关闭状态,但当它备份时,请观看Xcode 5中的autolayout视频,这将有助于解释发生了什么


但是,如果希望元素在旋转时完全改变位置,则可能需要的不仅仅是约束,还需要加入一些代码来处理纵向和横向之间的转换。所以这实际上取决于当你旋转设备时视图应该做什么。它是XCode 5或IOS 7中的一个bug

我在interface builder中创建了两个简单的iphone用户界面——一个在针对IOS 6.1的Xcode 4.6.3中,另一个在针对IOS 7 Beta 4的Xcode 5 Beta 4中


第一个应用程序完全按照我的设想运行,滚动视图以横向模式滚动。第二个应用程序在滚动视图中根本没有滚动,这显然是一个错误。

我的错误是根据视口的大小调整滚动视图的大小吗?我是否应该将scrollview的大小设置为更大的大小,以容纳纵向或横向的所有UI?(我假设scrollview的大小必须与可用空间相匹配,然后它只会滚动其内容Swall scrollview应该滚动其内容,无论其内容是否比它大。scrollview的宽度和高度应该与视图本身相同。然后,它的内容可以任意大,并且它将滚动。)只要您启用了用户交互功能,这正是我认为它应该如何工作的。当我切换到横向时,滚动查看器的内容比滚动视图本身大(滚动查看器是屏幕的大小,内容超出屏幕底部)。可能是XCode 5错误,我会在XCode 4中尝试