I was wondering if it is possible to set contentoffset for uiscrollview in viewwillappear method.
-(void) viewWillAppear:(BOOL)animated{
[self.scrollView setContentOffset:CGPointMake(320, 0) animated:YES];
NSLog(@"CALLED");
}
I can see viewwillappear is running but unfortunately it is not setting offset.
Thank you
you should call [super viewWillAppear:animated];
before attempting to set the offset.
However, it is possible you are trying to set the offset too early in the view lifecycle.
it might be good to override -(void)viewDidLayoutSubviews;
, and set the offset there.
as your view's frames should all be set appropriately by that time. (remember to call super
there too)
I have an alternative option that should work better:
Instead of overriding viewDidLayoutSubviews
, you can manually set the layout:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
view.layoutIfNeeded()
// Do something here
}
This way you get a fresh layout that should match your expectation
I have tested with your scrollView's contentSize & contentOffset in viewWillAppear. It is working fine to me. So, Please check weather your scrollView object is properly bound to your scrollView or not.