Xcode 如何停止interface builder在UIScrollView上重置用户约束?

Xcode 如何停止interface builder在UIScrollView上重置用户约束?,xcode,uiscrollview,interface-builder,autolayout,Xcode,Uiscrollview,Interface Builder,Autolayout,我在获取UIScrollView以遵守我在interface builder中设置的约束方面遇到了问题 我所需要做的就是从IB中设置滚动视图的内容大小 UIScrollView包含一个UIView UIScrollView上的约束条件: ui视图上的约束条件: 我已经通读了一遍,所以我把事情安排如下: UIScrollView具有将其固定到其superview的约束,从而从外部定义其大小 ui视图(内容)具有固定大小(通过宽度和高度限制) UIView固定在UIScrollView上,从而

我在获取
UIScrollView
以遵守我在interface builder中设置的约束方面遇到了问题

我所需要做的就是从IB中设置滚动视图的内容大小

UIScrollView
包含一个
UIView

UIScrollView上的约束条件

ui视图上的约束条件

我已经通读了一遍,所以我把事情安排如下:

  • UIScrollView
    具有将其固定到其superview的约束,从而从外部定义其大小
  • ui视图(内容)具有固定大小(通过宽度和高度限制)
  • UIView
    固定在
    UIScrollView
    上,从而定义内容大小
但是,IB不允许我输入这些约束。如果我将视图和滚动视图之间的“底部空间”约束(如图-2196所示)更改为0(从而固定滚动视图的下边缘),则“顶部空间”约束将重置为非零值。反之亦然。(我还没有在Xcode 5中尝试过,它对无效约束的处理方式要明智得多,因为它不会在需要的时候扔掉你的约束。)


我错过了什么?

每次我试图在Xcode 4的界面生成器中对约束做一些稍微复杂的事情时,我最终都放弃了,或者用代码编写约束,或者切换回springs'n'struts和
LayoutSubview
(通常是在Xcode崩溃几次之后)

这就是说,还有另一种方法可以在IB中布局包含内容的滚动视图。只需使滚动视图与其内容大小一样大,并依靠视图控制器(或某些包含视图控制器的控制器)调整滚动视图(或其superview)的大小,并让约束在运行时缩小滚动视图的帧。窗口的根视图控制器将始终将其视图的框架设置为屏幕大小,而不管其在nib或故事板中的大小,并且调整大小将沿视图层次结构向下流动

我更详细地描述了这种方法


如果您的滚动视图的内容大小真的应该是2196点高,这可能不会工作得很好。在这种情况下,我没有更好的建议。

我完全同意你的看法。Xcode 4在100%的时间里试图强制执行约束的方式(而不是允许在编译之前破坏您修复的更改)才是真正的问题。作为一个例子,我只是尝试向
UIScrollView
添加大小约束,然后将其删除…并且该配置(与我最初尝试的配置相同)被允许>是,这是您在Xcode 4中必须执行的操作,过度约束然后删除else Xcode将通过添加随机约束来与您抗争,因为如果某些东西受到约束不足,它将失去我的约束。