【发布时间】:2014-10-03 18:47:05
【问题描述】:
TL;DR:在 Interface Builder 中布局超大滚动视图内容的最佳方式是什么?
我正在尝试找出在 Interface Builder 中布局屏幕外/滚动内容最不痛苦的方法。我目前的方法是调整滚动视图内容的宽度和高度约束以查看 IB 中的所有内容,然后再恢复到适当的构建约束,但这会很麻烦。也就是说,为了便于编辑,我更愿意更多地以图形方式进行操作,而不是编程方式。
我能想到的一般做法是:
- 使用嵌入式 segues 以大小精确的方式构建视图(最直观的流程图方法)
- 调整编辑约束,重置构建
- 在 IB 中使用占位符值/约束(尚未尝试过)
- 以编程方式布局过大的内容
更详细地说,我正在尝试构建一个由子视图组成的垂直滚动视图。每个子视图都是自包含的,并且可能出现在多个上下文中,我想让它们保持隔离(事实上,我也嵌入了它们,但这不会影响问题)。我想做的是使用 IB 来布局一个高大的复合内容视图。然后,我想再次使用容器视图的单个内容视图创建外部滚动视图,嵌入复合内容视图。 IE。左侧的灰色内容视图在右侧嵌入了较高的红色/蓝色内容,我想知道是否可以推断出高度,因此它可能与设备无关(视图是方形的,因此它们将从设备中获取宽度)
总结一下,我是否可以从嵌入视图内容的实际高度推导出托管滚动视图的 contentView 高度,或者我应该使用方法 2、3 还是其他方法?
需要明确的是,自动布局要求滚动视图内容视图定义边缘约束和宽度/高度尺寸。就我而言,我希望能够将宽度预设为设备宽度,但将高度从红色/蓝色内容视图中导出。 IB 不会让我在 Storyboard 中的嵌入和嵌入场景之间拖动约束,当我遗漏该字段时,它使用原型值作为内容高度。
是否建议在 IB 中使用占位符大小 (3) 以使内容可见以进行编辑,知道运行时约束会正确呈现它(即 Storyboard 中的滚动视图过大,因此所有滚动内容都可见)?相反,即使尝试也是愚蠢的 - 我应该以编程方式完成所有滚动视图内容组合 (4) 吗?
提前致谢。
编辑:
占位符约束允许您通过,但强制您更改运行时约束的优先级,并触发冲突约束的 IB/布局错误和警告,尽管在冲突的仅设计时约束上选择了占位符复选框.
【问题讨论】:
标签: ios objective-c xcode swift autolayout