XCode:在IB中布置滚动内容

时间:2014-10-03 18:47:06

标签: ios objective-c xcode swift autolayout

TL; DR:在Interface Builder中布局超大滚动视图内容的最佳方法是什么?

我试图找出在Interface Builder中布局屏幕外/滚动内容的最不痛苦的方法。我目前的方法是调整scrollview内容宽度和高度限制,以查看IB中的所有内容,然后恢复到适当的建筑约束,但这会变得很麻烦。也就是说,我更愿意以图形方式进行更多操作,而不是以编程方式进行更简单的编辑。

我能想到的一般方法是:

  1. 使用嵌入式segues以大小准确的方式构建视图(最直观,流量极大的方法)
  2. 调整编辑约束,重置建筑
  3. 在IB中使用占位符值/约束(尚未尝试过)
  4. 以编程方式布局超大内容
  5. 更详细地说,我正在尝试构建一个由子视图组成的垂直滚动视图。每个子视图都是自包含的,并且可能出现在多个上下文中,我希望将它们隔离开(事实上,我也嵌入它们,但这不会影响问题)。我想做的是使用IB来布局高复合内容视图。然后,我想再次创建具有容器视图的单个内容视图的外部滚动视图,嵌入复合内容视图。 IE浏览器。左侧的灰色内容视图在右侧嵌入了较高的红色/蓝色内容,我想知道是否可以推断出高度,因此它可能与设备无关(视图是方形的,因此它们将从设备获取它们的宽度)

    enter image description here

    总结一下,无论如何,我可以从嵌入视图内容的实际高度推导出托管scrollview的contentView高度,还是应该使用方法2,3或其他?

    要清楚,自动布局要求滚动视图内容视图定义边缘和宽度/高度尺寸的约束。在我的情况下,我希望能够将宽度预设为设备宽度,但保留从红/蓝内容视图派生的高度。 IB不允许我在Storyboard中的嵌入和嵌入场景之间拖动约束,当我离开场时,它使用原型值作为内容高度。

    是否建议在IB中使用占位符大小(3)使内容可见以进行编辑,因为知道运行时约束会正确呈现(即在Storyboard中滚动视图的大小以便所有滚动内容都可见)?相反,即使尝试也是愚蠢的 - 我应该以编程方式(4)完成所有滚动视图内容合成吗?

    提前致谢。

    编辑:

    占位符约束允许您通过,但强制您更改运行时约束的优先级,并触发IB /布局错误和冲突约束的警告,尽管在冲突的设计时限制上选择占位符复选框

1 个答案:

答案 0 :(得分:0)

对静态单元格使用UITableviewController。单元格将是您的内容视图。

您可以在IB中向下滚动桌面视图以查看底部的单元格,您可以获得一个很好的额外行为,例如在打开键盘时将视图滚动到正确的位置,这样它就不会隐藏您单击的文本字段上。

您根本不必担心滚动视图。

如果要重用内容视图,可以使表格动态化,并按代码提供内容视图。