@SanMao
2015-08-06T00:34:11.000000Z
字数 1952
阅读 1731
UI
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor redColor];
UIViewController *rootVc = [[UIViewController alloc] init];
self.window.rootViewController = rootVc;
[self.window makeKeyAndVisible];
self.window.windowLevel = 1000;
/**
* 应用程序加载完成的时候调用
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 从storyboard加载控制器
UIStoryboard *sto = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
// 创建控制器
UIViewController *rootVc = [sto instantiateInitialViewController];
UIViewController *contr = [sto instantiateViewControllerWithIdentifier:@"VC"];
self.window.rootViewController = contr;
// 显示窗口
[self.window makeKeyAndVisible];
return YES;
}
File's Owner
的class为控制器的类名
// 创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 通过Xib创建控制器
UIViewController *rootVc = [[UIViewController alloc] initWithNibName:@"VC" bundle:nil];
self.window.rootViewController = rootVc;
// 显示窗口
[self.window makeKeyAndVisible];
假设通过Xib创建XMGViewController控制器对象
XMGView.xib
,如果有,就会去加载XMGView.xib描述的控制器的viewXMGViewController.xib
,如果有,也会去加载生成一个空的view
只要没有重写loadView
,系统就会自动判断有没有storyboard或者xib描述控制器的View,如果有就会去加载它们描述控制器的view
生成的默认的空View,默认几乎透明(alpha = 0.01)
如果一个VIew完全透明,可以直接穿透,点击后面的东西
如果当前控制器是窗口的根控制器,可以不设置尺寸
打印控制器的View的真实尺寸,一般不会在viewDidLoad方法中打印,因为不准确
// 在这个方法中打印View的真实尺寸
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSLog(@"%@",NSStringFromCGRect(self.view.frame));
}
控制器的view是延迟加载的:用到时再加载
可以用isViewLoaded
方法判断一个UIViewController的view是否已经被加载
控制器的view加载完毕就会调用viewDidLoad方法