ios-UI控件精讲之【3】-UIWindow

原文:http://www.jianshu.com/p/f10f0ed09991


UIWindow简介
  • UIWindow是一种特殊的UIView,通常在一个app中至少会有一个UIWindow

  • iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了

  • 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow

  • 也就说,没有UIWindow,就看不见任何UI界面

UIWindow的创建

方式一:通过MainStoryboard创建窗口。

系统加载MainStoryboard步骤:

  1. 创建窗口
  2. 加载Main.storyboard,并且创建storyboard描述的控制器。
  3. 把新创建的控制器作为窗口的根控制器
  4. 显示窗口
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    // 1.创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    // 2.加载storyboard描述的控制器
    // UIStoryboard加载Storyboard文件
    // name:需要解析storyboard文件名
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    // 通过storyboard创建控制器
    // instantiateInitialViewController:加载箭头指向的控制器
    UIViewController *vc = [storyboard instantiateInitialViewController];

//   UIViewController *vc =  [storyboard instantiateViewControllerWithIdentifier:@"org"];


    // 3.设置窗口根控制器
    self.window.rootViewController = vc;

    // 4.显示窗口
    [self.window makeKeyAndVisible];

    return YES;
}
方式二:通过代码,在程序启动完成的时候,手动创建窗口
// 程序启动完成的时候调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    // 显示窗口必须要做的事情:
    // 1.设置窗口的根控制器
    // 2.必须强引用
    // 3.必须要设置尺寸

    // 1.创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    self.window.backgroundColor = [UIColor redColor];

    // 2.设置窗口根控制器
    UIViewController *vc = [[UIViewController alloc] init];
    vc.view.backgroundColor = [UIColor greenColor];
    self.window.rootViewController = vc;

//    NSLog(@"%@",self.window);

    // 3.显示窗口
    // 1.成为应用程序的主窗口application.keyWindow
    // 2.显示窗口 self.window.hidden = NO;
    [self.window makeKeyAndVisible];
//    self.window.hidden = NO;

//
//    NSLog(@"%@",application.keyWindow);
    // 会把跟控制器的view添加到自己上面

    return YES;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值