23

我创建了一个新的视图控制器,然后添加了一个滚动视图作为根视图的子视图,并将“Leading/Top/Trailing/Bottom Space to Superview”设置为 0,以便滚动视图完全填充其父视图。

然后我添加了一个按钮作为滚动视图的子项,空间限制为 15 到“Superview”(即滚动视图)。因此,我希望按钮与上/左/右边框的间距为 15,并且滚动视图的内容以“按钮底部 + 15”结束。但是按钮的宽度不正确(在 Xcode 5 Interface Builder、iOS 6/7 模拟器中测试):

例子

如果我用“Equal Width to Superview”约束按钮,它甚至不起作用!仍然没有占据整个宽度。

我该如何解决这个问题?

4

1 回答 1

53

找到了一个很好的解决方案 :) 这种行为的原因是滚动视图将其内容视图大小调整为其子视图实际需要的大小,并且不会自动填充宽度/高度。如果应填充宽度,则滚动视图因此必须包含至少一个填充屏幕宽度的视图。

通过这些步骤,我添加了一个与滚动视图具有相等宽度的视图(滚动视图本身,而不是它的内容视图区域),导致我的滚动视图最终扩展到全宽,因为我还添加了约束“空间到超级视图0/0/0/0" 到滚动视图。

  • 假设一个具有一个根视图的空视图控制器
  • 添加滚动视图,在其上设置约束“空间到superview top/left/right/bottom=0/0/0/0”
  • 根据需要将您的 UI 添加到滚动视图中,并根据需要设置约束
  • 添加一个新视图,将其重命名为“确保滚动视图填充宽度”,具有以下约束
    • 超级视图的前导/尾随/顶部空间(即滚动视图!)= 0
    • 高度为 0,因为我们希望它不可见,因为视图只是一个助手
    • 重要部分:在层次结构中选择此视图和滚动视图并将它们限制为相等的宽度。由于滚动视图受限于其父视图,因此它将接收一个宽度。然后这个约束确保滚动视图的内容视图也(至少)那么宽。
于 2013-09-24T11:10:00.873 回答