具有自适应布局的 UIScrollView

Posted

技术标签:

【中文标题】具有自适应布局的 UIScrollView【英文标题】:UIScrollView with Adaptive Layout 【发布时间】:2015-06-07 16:24:14 【问题描述】:

我在 UIView 中有一个 UIScrollView,在滚动视图中有另一个 UIView(容器视图)。在自适应布局之前,我固定滚动视图以适应外部视图并设置容器视图的宽度和高度(也固定到滚动视图)。这样我就可以垂直滚动视图了。

现在,使用自适应布局,由于屏幕尺寸不同,我无法设置宽度...我必须设置哪个约束?我能想到的唯一解决方案是以编程方式将宽度设置为屏幕大小......

【问题讨论】:

【参考方案1】:

来自UIScrollView and Autolayout:

UIScrollView 类通过更改其边界的原点来滚动其内容。为了使用自动布局,滚动视图中的顶部、左侧、底部和右侧边缘现在意味着其内容视图的边缘。

对滚动视图的子视图的约束必须导致要填充的大小,然后将其解释为滚动视图的内容大小。(这不应与@987654322 混淆@ 用于 Auto Layout 的方法。)要使用 Auto Layout 调整滚动视图的框架大小,约束必须明确关于滚动视图的宽度和高度,或者滚动视图的边缘必须绑定到其子树之外的视图。

在您的情况下,“容器视图”必须具有明确的大小,独立于滚动视图的大小。最简单的方法是添加高度和宽度约束,并将其 constant 属性设置为您想要的值。

所以,如果你想让“Container View”成为屏幕的宽度,添加一个宽度约束,并在运行时将其常量设置为当前屏幕宽度。

【讨论】:

【参考方案2】:

将容器视图的宽度限制为等于根级视图的宽度。移除容器视图的硬编码宽度约束。

【讨论】:

以上是关于具有自适应布局的 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

静态自适应流式响应式四种网页布局有什么区别

关于静态布局自适应布局流式布局响应式布局弹性布局的一些概念

前端经典布局(两边固定中间自适应)

iOS 7 自动布局与 iOS 8 自适应布局,有区别吗?

响应式布局与自适应式布局有什么不同

flex布局 一侧固定宽度 一侧自适应