简析UIWindow

Snip20150707_4.png
  • 添加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不是keyWindow

  • view.window
    获得某个UIView所在的UIWindow

Snip20150707_5.png
  • 代码示例:
    // 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];

你可能感兴趣的:(简析UIWindow)