在viewDidLoad / viewWillAppear中设置我的UIScrollView的内容大小没有效果 - 为什么?

时间:2011-08-18 02:13:43

标签: ios ipad 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中的大小。

为什么会这样?

2 个答案:

答案 0 :(得分:8)

我不知道是什么在重置你,但我可以帮你找到答案。

在这种情况下我通常做的是子类UIScrollView(通常为“XXXUIScrollView”),覆盖setContentSize:(只调用[super setContentSize:size],可能使用NSLog),并设置断点重写的方法,以查看设置值的内容。

答案 1 :(得分:0)

我遇到了完全相同的问题,到目前为止我发现的唯一解决方法是执行performSelector:withObject:afterDelay - 在一些小延迟后设置contentSize属性: UIScrollView won't scroll even when I set content size