Reputation: 26223
Previously when setting up controllers programatically I have always set the size and position of the root UIView element (i.e.)
// UIViewController -loadView
CGRect viewFrame = CGRectMake(0, 20, 320, 460);
UIView *view = [[UIView alloc] initWithFrame:viewFrame];
[self setView:view];
[view release];
I have just noticed (and I wonder if anyone can confirm) that if your adding the root UIView to a controller that you don't need to set the size or position as it autosizes to the space available. (i.e.)
// UIViewController -loadView
UIView *view = [[UIView alloc] init];
[self setView:view];
[view release];
I understand that subsequent UIViews (i.e. UIButton, UILabel etc.) will need to be positioned and sized, I just want to make sure I am understanding the behaviour I am currently seeing.
Upvotes: 0
Views: 599
Reputation: 351
Size of the root view of any UIViewController is managed by that controller's parent instance, that may be another controller or window. It determines the size automatically. For example, if you are creating UITabBarController, it determines sizes of all its child controllers' root views. Or, if you write your own container view controller it must determine sizes of root views of its child controllers.
See "View Management" section in this topic: UIViewController Class Reference
Upvotes: 0
Reputation: 12036
It does resize the frame of the view.
UIView *view1 = [[UIView alloc] init];
NSLog(@"ViewFrame before set:%@",NSStringFromCGRect(view1.frame));
[self setView:view1];
NSLog(@"ViewFrame after set:%@",NSStringFromCGRect(view1.frame));
[view1 release];
But I could not find anything in docs that justify this.
Upvotes: 1