UIScrollView在viewwillappear中设置contentoffset不起作用

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

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

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

谢谢

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

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

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

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

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

我有一个应该更好的替代选项:

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

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

这样您就可以获得符合您期望的全新布局