, viewController view viewController a 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.
EDIT:
I thought it deserved further testing. Using the following code:
- (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;
}
results:
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)
So, is the culprit. [self.window makeKeyAndVisible];
source
share