【发布时间】:2015-10-18 02:01:53
【问题描述】:
在使用自动布局构建基本 UIScrollView 示例时,我遇到了一些奇怪的行为。
在 Storyboard 编辑器中,我添加了一个 UIScrollView 作为默认 UIView 的子项,并在其中添加了一个新 UIView 并将其命名为 contentView:
查看
--滚动视图
----内容视图
我在 contentView 中添加了一些标签和文本框,并将它们的约束设置为父容器(contentView)。
我还将 contentView 的约束设置为 UIScrollView,将 UIScrollView 设置为其父级,最后将 contentView 设置为使用与顶级 UIView 相同的高度和宽度。添加约束后,关于缺少约束的所有错误或警告都消失了,屏幕在 Storyboard 编辑器中看起来完全符合我的要求。
为了便于故障排除,我将主视图着色为蓝色,将 UIScrollView 着色为黄色,并将 contentView 着色为绿色。
当我在模拟器或真机上运行应用程序时,文本字段缩小而不是 200 宽,标签 3 及其文本框丢失(很可能在屏幕外)并且屏幕为黄色,表示 UIScrollView 是正在显示。一旦我旋转屏幕,一切看起来都和它应该的完全一样:
Gifycat image link as I can't post images yet
打印出框架的宽度:
- 视图宽度:320.0
- scrollView 宽度:240.0
- contentView 宽度:240.0
我已经使用 Xcode 6.4 和 7.0 beta 4 在 Swift 1 和 2 中复制了这种行为。
【问题讨论】:
-
我认为你需要在 UIScrollView 上对其父视图进行约束
-
抱歉,我错过了描述中的那部分,现在将对其进行编辑,因为 UIScrollview 确实对其父级有限制
-
这真的是你如何设置约束的问题,你有没有约束宽度和水平约束?有时,从最少的数量开始并“向上”工作是最容易的
-
@thefredelement 为 UIScrollView 我设置了尾随空间、前导空间、底部空间和顶部空间的约束到它的父级。对于 contentView,我将它的父级(scrollView)设置为相同,但也将它的宽度和高度设置为等于顶层视图的宽度和高度
-
需要定义滚动视图内部的视图,以便滚动视图知道它必须滚动什么。这将是包含您的文本字段的 UIView。我认为您的最后一个 UIView 有点多余,如果您不需要它,我建议将元素直接放入 UIScrollView,尽管它们需要高度和宽度约束
标签: ios iphone swift uiscrollview