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
UIScrollView is the superclass of several UIKit classes, including UITableView and UITextView. A scroll view is a view with an origin that’s adjustable over the content view. It clips the content to its frame, which generally (but not necessarily) coincides with that of the application’s main window.
A view that allows the scrolling and zooming of its contained views. UIScrollView is the superclass of several UIKit classes, including UITableView and UITextView. A scroll view is a view with an origin that’s adjustable over the content view.
It clips the content to its frame, which generally (but not necessarily) coincides with that of the application’s main window. A scroll view tracks the movements of fingers, and adjusts the origin accordingly.
As the user makes a pinch-in or pinch-out gesture, the scroll view adjusts the offset and the scale of the content. When the gesture ends, the object managing the content view should update subviews of the content as necessary.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With