添加UIView到UIWindow中两种常见方式:
-(void)addSubview:(UIView *)view;
直接将view添加到UIWindow中,但并不会理会view对应的UIViewController@property(nonatomic,retain) UIViewController *rootViewController;
自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期常用方法
-(void)makeKeyWindow;
让当前UIWindow变成keyWindow(主窗口)-(void)makeKeyAndVisible;
让当前UIWindow变成keyWindow,并显示出来
[UIApplication sharedApplication].windows
在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象
(平时输入文字弹出的键盘,就处在一个新的UIWindow中)[UIApplication sharedApplication].keyWindow
用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindowview.window
获得某个UIView所在的UIWindow
- 代码示例:
// 1.创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor redColor];
// 2.创建窗口的根控制器
UIViewController *rootVc = [[UIViewController alloc] init];
rootVc.view.backgroundColor = [UIColor greenColor];
// UIButton *addBtn = [UIButton buttonWithType:UIButtonTypeContactAdd];
// addBtn.center = CGPointMake(200, 200);
// [rootVc.view addSubview:addBtn];
// [self.window addSubview:rootVc.view];
// 把控制器作为窗口的跟控制器,就会把跟控制器的view自动添加到窗口
// 设置了窗口的根控制器,有旋转的功能
self.window.rootViewController = rootVc;
// 3.显示窗口
[self.window makeKeyAndVisible];