当您将此设为of时,看起来'viewController
sview
已调整大小。否则你必须手动设置它的框架。viewController
rootViewController
application
window
我试过这段代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
FooViewController *viewController = [[FooViewController alloc] init];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
FooViewController *viewController2 = [[FooViewController alloc] init];
[viewController.view addSubview: [viewController2 view]];
return YES;
}
viewController
已调整大小,viewController2
但没有。
另外:对于viewController
所有这些方法都被调用:
viewDidLoad
viewWillLayoutSubviews
viewDidLayoutSubviews
viewDidAppear
viewController2
只为viewDidLoad
和viewDidAppear
被调用。
也很有趣:viewController
在它viewWillLayoutSubviews
被调用之前被调整了大小。
编辑:
我认为这值得进一步测试。使用以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
FooViewController *viewController = [[FooViewController alloc] init];
NSLog(@"after init: self.view is %@", viewController.view);
self.window.rootViewController = viewController;
NSLog(@"after setting to rootViewController: self.view is %@", viewController.view);
[self.window makeKeyAndVisible];
NSLog(@"after makeKeyAndVisible: self.view is %@", viewController.view);
return YES;
}
结果是:
viewDidLoad: frame = (0 0; 0 0)
after init: frame = (0 0; 0 0)
after setting to rootViewController: frame = (0 0; 0 0)
after makeKeyAndVisible: frame = (0 20; 320 460)
viewWillLayoutSubviews: frame = (0 20; 320 460)
viewDidLayoutSubviews: frame = (0 20; 320 460)
viewDidAppear: frame = (0 20; 320 460)
[self.window makeKeyAndVisible];
罪魁祸首也是如此。