iOS基础-UIWindow

一、简介:

UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow

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

一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow。也就说,没有UIWindow,就看不见任何UI界面

补充:UIWindow是创建的第一个视图控件(创建的第一个对象是UIapplication)

先创建UIWindow再创建控制器,创建控制的view,然后将控制的view添加到UIWindow上

二、UIWindow的创建过程


#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

//当程序框架初始化成功后,调用此函数。
//此函数用来初始化整个程序的框架结构
//整个程序对iOS开发工程师的入口函数
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    //1、创建一个UIWindow对象。整个程序中只有一个UIWindow对象
    //在程序级别上表示屏幕窗口
    //UIWindow也是继承自UIView
    //UIWindow是一个特殊的UIView
    //UIScreen:表示屏幕硬件表示类
    //mainScreen获得主屏幕设备信息
    //bounds表示屏幕的宽高值
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
    //2、创建一个视图控制器作为UIWindow的根视图控制器(将UIView添加到UIWindow)
    self.window.rootViewController = [[UIViewController alloc] init];
    self.window.backgroundColor = [UIColor redColor];
    
    //3、使Window有效并显示到屏幕上
    [self.window makeKeyAndVisible];
    return YES;
}

1、程序创建:
        先执行Main函数,执行UIApplicationMain(),根据其第三第四个参数创建Application,创建代理,并且把代理设置给application,开启一个事件循环,当程序加载完毕,调用didFinishLaunchingWithOptions方法。在该方法中创建一个window,然后创建一个控制器,并且把这个控制器设置为UIWindow的根控制器,接下来将window显示出来,即看到了运行后显示的界面。

2、storyboard创建:
        当用户点击应用程序图标时,先执行Main函数,创建UIApplicationMain(),根据第三第四个参数创建Application,创建代理,并把代理设置给application(通过info.plist中的storyboard找到对应的storyboard),开始一个事件循环,当程序加载完毕,调用didFinishLaunchingWithOptions。在调用didFinishLaunchingWithOptions方法之前,会加载storyboard,在加载时创建一个window,接下来会创建箭头所指向的控制器,把该控制器设置为UIWindow的根控制器,接下来将window显示出来,即看到了运行后显示的界面。

补: [self.window makeKeyAndVisible];让窗口成为主窗口,并且显示出来。有了这个方法才能把信息显示到屏幕上。
因为有了这个方法,可以让window凭空显示出来,而其他的view没有这个方法,所以只能依赖于window,window显示出来后,view才依附在window上显示出来。
    [self.window makeKeyWindow];//让UIWindow成为主窗口,但不显示

Demo地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值