UIScrollView 不滚动自动布局问题

Posted

技术标签:

【中文标题】UIScrollView 不滚动自动布局问题【英文标题】:UIScrollView not scroll auto layout issues 【发布时间】:2014-12-19 17:58:18 【问题描述】:

我一生中从未使用过自动布局,那是一段美好的时光,现在故事板让我大开眼界。

这个构想也许还不错。但它仍然是越野车和最糟糕的使用。我今天工作了,花了 8 个小时来设置一个滚动视图和几个子视图。是不是省时间???

如果 Apple 想要支持采用式设计。为什么他们不使用 Edge Reflow 概念。它适用于网络,但它很棒而且没有错误......

我有所有需要约束的滚动视图,这意味着滚动视图的大小将与超级视图相同。

我正在尝试在-viewDidLoad 方法中更改滚动视图内容大小:

[self.theScrollView setContentSize:CGSizeMake(self.view.frame.size.width, 20000)];

但它似乎需要工作。

打印出来说内容大小是320 20000,但是我可以滚动一下。

【问题讨论】:

【参考方案1】:

使用自动布局,您必须自下而上且隐式地做事;换句话说,不是告诉 scrollView 其内容有多大,而是让 scrollView 根据其内容的大小自行调整。这允许自动布局解决子视图之间的约束并向上传播更改。

如果要显式设置内容大小,可以创建一个包含scrollView所有内容的附加子视图,然后重写其intrinsicContentSize方法以显式告诉scrollView它有多大。

【讨论】:

感谢您的回答。我还找到了一个解决方案,建议我们添加内容视图。将其固定到所有侧面。然后提高内容视图的高度并更新约束。【参考方案2】:

工作尝试。

如果您使用自动布局,则只使用 viewDidLoad()

[_mainScroll setContentSize:CGSizeMake(320, 2000)];

或者如果您使用的是 autolayout,请按照以下步骤操作:

首先给滚动视图顶部、底部、前导和尾随约束。 现在再看一个视图,并提供与您之前提供的滚动视图相同的约束。

不要忘记为该视图提供额外的约束固定高度宽度等于到主父视图。

看看这个

https://www.youtube.com/watch?v=rjTS9fyWqdg

【讨论】:

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

尽管添加了自动布局约束,但 UIScrollView 不滚动

以编程方式布局 UIScrollView,并为其子视图添加了自动布局,但它不滚动

UIScrollView 不使用自动布局滚动(内容视图框架大小以编程方式更改)

苹果自己关于如何使用自动布局制作水平滚动 UIScrollView 的说明不起作用?

UIScrollView 不能使用情节提要垂直滚动(使用自动布局)?

UIScrollView 和自动布局