Reputation: 13361
Really strange behaviour here. I've got a view with a scroll view inside, which contains my interface.
In my viewDidLoad
, I set the frame of my scrollView to have an origin of 0,0.
I log the origin at the end of my viewDidLoad
, and it's 0.
However, at the start of my viewWillAppear
, the origin is -20.
Does anyone know what kind of method could get called that would do this?
Thanks in advance
Upvotes: 12
Views: 15267
Reputation: 6679
20 pixel discrepancies and nib files always seem to be woe, but with Interface Builder and status bars. Are you setting up the nib with the same status-bar state as what your using in your app?
If you've hidden your status bar in your app, have you done the same in Interface Builder?
Upvotes: 2
Reputation: 11476
You are correct with the current method precedence:
-(void)loadView;
-(void)viewDidLoad;
-(void)viewWillAppear;
-(void)viewDidAppear;
Is there perhaps a rotation call or some other method in the way, such as didRotateToInterfaceOrientation;
for example? Also, is this scroll view part of a controller that's loaded from a nib file?
Upvotes: 32
Reputation: 8924
If you want to find out what it could be, you can try registering your view for key value observing, as described here: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html
You can register to listen for changes to the frame property, and then set a breakpoint in the observe method which should let you see exactly what the stacktrace is for when your origin is set to the strange value.
Upvotes: 6