Interface Builder 对 UIScrollView 的正确约束是啥?来自 IB 的纯自动布局
Posted
技术标签:
【中文标题】Interface Builder 对 UIScrollView 的正确约束是啥?来自 IB 的纯自动布局【英文标题】:What are the correct constraints on UIScrollView from Interface Builder? Pure Autolayout from IBInterface Builder 对 UIScrollView 的正确约束是什么?来自 IB 的纯自动布局 【发布时间】:2015-12-20 07:47:40 【问题描述】:我已经尝试让ScrollView
工作 2 天了,但它根本不起作用。 SO和其他网站上的大多数建议都说您需要将ScrollView
固定到root view
,然后在ScrollView
内放置一个ContentView (UIView)
,然后将其固定到ScrollView
的所有侧面(所以scroll size
可以确定 contentSize
... 但是这没有任何作用)。那里也有相互矛盾的信息,one video 表示需要从ScrollView
的底部到ContentView
的约束。这两种解决方案都不适合我。以下是我在尝试过的大多数组合中一直在做的事情:
UIView
-> UIScrollView
将UIScrollView
的所有边固定到 UIView
在UIScrollView
中创建一个UIView
(命名为content view
)和place
将UIView
的所有侧面固定到UIScrollView
此时的问题:UIScrollView
需要 constraints
用于 X
或 width
AND Y
或 width
。唯一似乎解决投诉的方法是将UIView
设置在scroll view
内,水平和垂直居中,但这对滚动工作没有任何帮助。另一种选择是将UIView
设置为等于height
和width
为scroll view
,但同样,除了删除投诉之外没有任何作用。
我不明白。不是固定边,设置约束吗? IB
好像觉得不是这样的。
需要哪些正确的约束?我只需要一个简单的视图,其中包含堆叠的controls
(填写表格),如果表格比screen
长,屏幕需要能够scroll
。
我是第一次使用 ios,目前纯粹从 IB
构建...最好的代码最少的解决方案。
【问题讨论】:
作为您链接的视频的创建者,我确信它描述了一种工作技术。发布您的布局和约束的屏幕截图。也许给一个测试故事板的链接。 我确认@robmayoff 发布了正确且完整的解决方案。 @robmayoff 确实有效。我缺少的是在 ContentView 上对齐中心 X 以查看。现在可以了,谢谢。它是偶然添加的……通过“添加缺少的约束”。 【参考方案1】:你已经成功了一半。首先你需要决定你要在滚动视图中显示什么,你已经放置了一个内容视图,它需要有一个内在的大小。您可以选择放置静态或动态视图。静态视图将在设计时定义其大小,这将解决 UIScrollView AutoLayout 约束。相反,如果您在运行时使用动态视图执行此操作,则需要为内容视图选择默认大小,为视图的宽度和/或高度创建一个 IBOutlet,然后在运行时调整它们的大小,更改 viewDidLayoutSubviews 中的出口。您链接的视频非常清楚地说明了这一点。
【讨论】:
以上是关于Interface Builder 对 UIScrollView 的正确约束是啥?来自 IB 的纯自动布局的主要内容,如果未能解决你的问题,请参考以下文章
如何处理未知的 UILabel 高度及其对 Interface Builder 中标签下方的影响?
Xcode 的 Interface Builder 中的外部对象占位符丢失
Interface Builder 找不到 .xib - Xcode 5.0.2
使用 Interface Builder 构建的自定义 UIView 可通过 Interface Builder 访问/定位