问题
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
回答1:
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.
回答2:
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?
回答3:
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?
来源:https://stackoverflow.com/questions/6821067/iphone-what-gets-called-after-viewdidload-before-viewwillappear