在viewDidLoad / viewWillAppear中设置我的UIScrollView的内容大小不起作用 – 为什么?

我试图强制容器加载时,我的UIScrollVIew的内容大小。 我发现这比我想象的要困难得多。 我已经尝试在viewDidLoadviewWillAppear设置内容大小,如下所示:

 -(void)viewWillAppear:(BOOL)animated { CGSize newContentSize = CGSizeMake(scrollView.contentSize.width, scrollView.frame.size.height + 80.0); [scrollView setContentSize:newContentSize]; } 

如果我在调用setContentSize之后立即放置断点,则可以看到新的内容大小实际上是我设置的。

但是,如果我在viewWillAppear (例如scrollViewDidScroll之后的某个任意点检查内容大小,则内容大小已恢复为滚动视图中“实际”内容的大小,而不是我尝试强制的大小它在viewDidAppear

为什么是这样?

我不知道什么是重置在你身上,但我可以帮你find答案。

我通常在这种情况下做的是UIScrollView的子类(通常是“XXXUIScrollView”),覆盖setContentSize:只需调用[super setContentSize:size] ,也许用NSLog),并在重写的方法中设置一个断点什么是设定的价值。

我得到了完全相同的问题,目前唯一的解决方法是执行performSelector:withObject:afterDelay – 设置contentSize属性后一些小的延迟: 即使我设置内容大小UIScrollView不会滚动