UITableViewCell 原型中的 UIScrollView 仅在重用后滚动

UIScrollView in UITableViewCell prototype scrolls only after reuse

我在故事板的 UITableViewCell 原型及其内容视图中设置了水平 UIScrollView。我已经使用了自动布局。

-cellForRowAtIndexPath: 方法中,我为此滚动视图设置了 contentSizecontentOffset

第一次创建单元格时出现问题。 scrollView 也不会滚动,contentOffset 也不会发生。

但是,当我向下滚动几个单元格时(当它们开始被重复使用时),contentOffset 发生,并且 scrollView 是交互式的。

自从我将 UITableViewCell 子类化后,我尝试在 -awakeFromNib 方法中设置 contentOffset,但没有任何影响。我也尝试在 -tableView:willDisplayCell: 方法中这样做,但无济于事。

可能出了什么问题?有解决方法吗?

似乎没有任何我可以包含的相关代码。如果您需要更多信息,请发表评论。

编辑 我不知道这是否相关,但 Storyboard 显示警告: Scroll View: Has ambiguous scrollable content width

问题是因为设置 contentSize 后 scrollView 没有被布局。如果 contentSize 已经在 storyBoard 本身中正确设置,这就不会成为问题(仍然不知道该怎么做)。

无论如何,在 cellForRowAtIndexPath 方法中,调用

[cell layoutIfNeeded];

设置 contentSize 后立即生效。

可以在 thread.

中找到有关此方法如何工作的很好的解释