在viewDidLoad中调用setContentSize后,UIScrollView不会更新,但是从按钮调用时会更新

时间:2014-04-23 04:41:55

标签: ios uiscrollview scroll autolayout

我的ViewController UIScrollView包含View,其中包含可变大小的内容。

- ViewController
    -ScrollView
        -View
            -label1
            -label2
            - ...

当调用控制器的viewDidLoad时,我将UIScrollView的内容大小设置为适当的高度,但视图不会滚动。如果我通过按钮上的操作调用相同的行,它会更新contentSize并正确滚动。我正在使用autolayout。知道为什么以及如何解决它?

视图不会滚动:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [_scrollView setContentSize:CGSizeMake(100,500)];
}

视图将正确滚动:

- (IBAction)test:(id)sender 
{
    [_scrollView setContentSize:CGSizeMake(100,500)];
}

3 个答案:

答案 0 :(得分:1)

请勿在{{1​​}}中设置内容大小。在viewDidLoad

中执行

答案 1 :(得分:1)

ViewDidAppear还保证您的视图已加载并初始化但viewdidAppear在viewDidLayoutSubviews之后触发。如果你在ViewDidLoad中进行大型编码,那么你的ViewController会在显示中延迟显示

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:NO];
    [_scrollView setContentSize:CGSizeMake(100,500)];
}

答案 2 :(得分:0)

  • 的ViewController -ScrollView     -视图         -label1         -label2

首先ScrollView添加新的约束,然后下一个label1和label2添加约束,然后最终的View视图可以添加约束。