UIScrollView在viewwillappear中设置contentoffset不起作用

时间:2014-09-18 14:53:29

标签: ios objective-c uiscrollview

我想知道是否可以在viewwillappear方法中为uiscrollview设置contentoffset。

-(void) viewWillAppear:(BOOL)animated{

    [self.scrollView setContentOffset:CGPointMake(320, 0) animated:YES];
    NSLog(@"CALLED");    
}

我可以看到viewwillappear正在运行但不幸的是它没有设置偏移量。

谢谢

3 个答案:

答案 0 :(得分:16)

在尝试设置偏移量之前,您应该调用[super viewWillAppear:animated];

但是,您可能尝试在视图生命周期中过早设置偏移量。

覆盖-(void)viewDidLayoutSubviews;并在那里设置偏移量可能是好的。

因为你的视图的框架应该在那个时候都适当地设置。 (记得也在那里打电话给super

答案 1 :(得分:1)

我有一个更好的替代选择:

您可以手动设置布局,而不是覆盖viewDidLayoutSubviews

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    view.layoutIfNeeded()
    // Do something here
}

这样,您可以得到符合您期望的全新布局

答案 2 :(得分:0)

我已经使用你的scrollView的contentSize&测试了viewWillAppear中的contentOffset。它对我很好。因此,请检查天气您的 scrollView对象是否已正确绑定到 scrollView