具有自动布局模糊高度的 UIScrollView
UIScrollView with Autolayout Ambigous height
我已经阅读了很多关于垂直滚动的 ScrollViews 的 manuals/tutorials,但到目前为止还没有想出如何解决我的问题。
你可以在这里看到我的 ScrollView 视觉计划:
ScrollView plan
Whosebug 上最有帮助的答案在这里:
据此,我做了以下内容:
我的 ScrollView(在我的屏幕截图上标记为红色)有 0,0,0,0 个约束并且与 ViewController 的视图宽度相等。在我的 ScrollView 中,我制作了一个 ContentView(在我的屏幕截图中为橙色),其中包含(在我的屏幕截图中为绿色):
1) 具有恒定高度并固定 top/left/right 到 ContentView 的 ImageView。
2) 具有恒定高度的视图并将顶部固定到 ImageView,left/right 固定到 ContentView。
3) 具有恒定高度的视图并将顶部固定到其上方的视图,left/right 固定到 ContentView。
4) TextView 将顶部固定到其上方的视图,left/right 固定到 ContentView,固定底部 到 ContentView。
因此,设置了所有垂直约束,我的可滚动内容高度应根据文本视图的高度而变化。这就是我的目标。
但是我从情节提要中得到了错误,告诉我:需要约束:Y 位置或高度。
你能帮我解决这个问题吗?
谢谢!
我刚刚发现,我必须取消选中文本字段上的 "Enable scrolling"。有道理。
我之前已经尝试过,但在我从头开始制作这个故事板之前它对我没有帮助ViewController。
故事板抛出这些警告的原因是因为它无法计算滚动视图的内容大小。对于内容视图中的第一组约束,它的高度不明确。
举例来说,您将每个高度约束设置为 100,固定约束有 20 个 space 值,内容视图中每个子视图的框架将如下所示:
- ImageView (20, 20, view.Width, 100)
- 查看 (20, 140, view.Width, 100)
- 视图 (20, 260, view.Width, 100)
- TextView(20, 380, view.Width, ??)
由于您的 textView 有上下约束,它的高度会变化,内容视图的高度也会根据 textView 的高度而变化。
然而,textView 也有滚动特性,如果没有额外的约束,这将很难计算它与内容视图相关的高度。
由于您在 textView 中禁用了它的滚动功能,故事板在计算每个子视图框架时不再有任何困难,这就是警告消失的原因。
可选地,您可以启用 textView 的滚动功能并为其提供高度约束,这将为故事板提供足够的信息来计算每个子视图帧。
我已经阅读了很多关于垂直滚动的 ScrollViews 的 manuals/tutorials,但到目前为止还没有想出如何解决我的问题。
你可以在这里看到我的 ScrollView 视觉计划:
ScrollView plan
Whosebug 上最有帮助的答案在这里:
据此,我做了以下内容:
我的 ScrollView(在我的屏幕截图上标记为红色)有 0,0,0,0 个约束并且与 ViewController 的视图宽度相等。在我的 ScrollView 中,我制作了一个 ContentView(在我的屏幕截图中为橙色),其中包含(在我的屏幕截图中为绿色):
1) 具有恒定高度并固定 top/left/right 到 ContentView 的 ImageView。
2) 具有恒定高度的视图并将顶部固定到 ImageView,left/right 固定到 ContentView。
3) 具有恒定高度的视图并将顶部固定到其上方的视图,left/right 固定到 ContentView。
4) TextView 将顶部固定到其上方的视图,left/right 固定到 ContentView,固定底部 到 ContentView。
因此,设置了所有垂直约束,我的可滚动内容高度应根据文本视图的高度而变化。这就是我的目标。
但是我从情节提要中得到了错误,告诉我:需要约束:Y 位置或高度。
你能帮我解决这个问题吗?
谢谢!
我刚刚发现,我必须取消选中文本字段上的 "Enable scrolling"。有道理。
我之前已经尝试过,但在我从头开始制作这个故事板之前它对我没有帮助ViewController。
故事板抛出这些警告的原因是因为它无法计算滚动视图的内容大小。对于内容视图中的第一组约束,它的高度不明确。
举例来说,您将每个高度约束设置为 100,固定约束有 20 个 space 值,内容视图中每个子视图的框架将如下所示:
- ImageView (20, 20, view.Width, 100)
- 查看 (20, 140, view.Width, 100)
- 视图 (20, 260, view.Width, 100)
- TextView(20, 380, view.Width, ??)
由于您的 textView 有上下约束,它的高度会变化,内容视图的高度也会根据 textView 的高度而变化。
然而,textView 也有滚动特性,如果没有额外的约束,这将很难计算它与内容视图相关的高度。
由于您在 textView 中禁用了它的滚动功能,故事板在计算每个子视图框架时不再有任何困难,这就是警告消失的原因。
可选地,您可以启用 textView 的滚动功能并为其提供高度约束,这将为故事板提供足够的信息来计算每个子视图帧。