iOS---UIWindow的介绍

简介

  • UIwindow是一种特殊的UIView,通常一个app中只会有一个UIWindow
  • ios程序启动完成后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了
  • 一个ios程序之所以能显示到屏幕上,完全是因为它有UIWindow,换句话说,没有UIWindow,就看不见任何UI界面
  • 状态栏和键盘都是特殊的UIWindow

补充: UIWindow是创建的第一个视图控件,如下图:

在这里插入图片描述在这里插入图片描述先创建UIWindow,再创建控制器,创建控制器的View,然后将控制器的view添加到UIWindow上。

让我们来看看官方文档解释

在这里插入图片描述

UIWindow的创建过程

简单说明

AppDelegate

@implementation AppDelegate
//系统启动完成时调用
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    //系统创建window
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    //系统设置创建window的背景颜色
    self.window.backgroundColor = [UIColor whiteColor];
    //这一句在后面说
    self.window.rootViewController = [[ViewController alloc]init];
    //设置为主窗口并显示出来
    [self.window makeKeyAndVisible];
    return YES;
}
  • 我们看到系统为我们创建的window属性是strong强引用,是为了不让窗口销毁,所以需要强引用
  • 窗口的尺寸必须设置,一般设置为屏幕大小。
view添加到UIWindow
  1. 直接将控制器的view添加到UIWindow中
[self.window addSubview:vc.view];
  1. 设置UIWindow的根控制器
self.window.rootViewController = [[ViewController alloc] init] ;

两种方法的区别
在开发中我们经常会使用第二种,不会用到第一种。

  • 第一种直接将控制器的view添加到UIWindow中,并不理会它对应的控制器,如若做交互动作需通知控制器时,而控制器已经销毁,则会出现未知的错误
  • 当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给UIWindow,UIWindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转。UIapplication对象 -> UIWindow -> 根控制器(第一种方式没有根控制器,所以不能跟着旋转)

设置根控制器可以将对应界面的事情交给对应的控制器去管理。

参考:iOS-UIWindow详解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值