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



我有一个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)];
}

ViewDidAppear 也保证您的视图已加载并初始化 但是 viewdidAppear在 viewDidLayoutSubviews 之后触发。 如果您在 ViewDidLoaded 中执行大型编码,则 Realted 到 UI 您的视图控制器在显示中延迟

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

不要在 viewDidLoad 中设置内容大小。在viewDidAppear中做到这一点

  • 视图控制器-滚动视图 -视图 -标签1 -标签2

第一个滚动视图添加新的约束,下一个标签 1 和标签 2 添加约束,然后最终视图视图可以添加约束。

最新更新