UIWindow的讲述以及底层

简介: UIWindow的讲述以及底层

一.先对UIWindow做一个简单的介绍


  • 1.UIWindow 是一种特殊的UIView,通常在一个app中至少会有一个UIWindow
  • 2.iOS程序启动完毕后,创建的第一个视图空间就是UIWindow,接着创建控制器的view,最后将控制器的view 添加到UIWindow上,于是控制器的view 就显示在屏幕上了
  • 3.一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow
  • 4.也就是说没有UIWindow,就看不见任何UI界面


二.简述一下UIWindow在AppDelegate里面底层的实现

//加载info.plist,并且做出判断,判断有没有main,就不会帮你创建窗口,自己动手创建
 //程序启动完成时的调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
 /* 窗口现实的注意点
  * 1.不要让窗口销毁,需要弄一个强引用
  * 2.必须要设置窗口的尺寸
  *
  */
  //1.创建窗口对象
  self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
  //2.创建窗对象的根控制器并且赋值
  //苹果推荐使用根控制器的原因,对应界面的事情交给对应的控制器去管理,一旦设置了窗口的根控制器,就会把控制器的view添加到窗口
  self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[ViewController new]];
  //3.显示窗口
  [self.window makeKeyAndVisible];
  return YES;
}
  • 1.先解释一下为什么用根控制器而不选择addSubview


它可以使屏幕具有旋转的功能


  • 2.解释[self.window makeKeyAndVisible];


它的作用:

1. 可以显示窗口 self.window.hidden = NO
  2. 成为主窗口  application.keyWindow = self.window;

** 三.对UIWindow的补充:哪些平常见的是窗口???


  • 1.状态栏是一个比较特殊的窗口
  • 2.键盘也是一个窗口
  • 3.打印所有的窗口(以数组的形式展示)


NSLog(@"打印所有窗口%@",application.windows);

四.UIWindow的层级表示以及设置


  • 1.层级越高就越在最上面,键盘的层级比较高
  • 2.窗口层级的设置(自己你可以设置几个Window)
    (1).UIWindowLevelNormal(默认)
    (2).UIWindowLevelAlert,
    (3).UIWindowLevelStatusBar


层级顺序


UIWindowLevelAlert > UIWindowLevelStatusBar > UIWindowLevelNormal


层级的设置


self.window.windowLevel = UIWindowLevelAlert;

  • 3.层级可以进行加减的


image.png

加减的效果


image.png


最后感谢您的阅读,记得点击喜欢哦!!!

目录
相关文章
|
缓存 C++
12-objc_msgSend底层调用流程探究
12-objc_msgSend底层调用流程探究
59 0
|
编译器 程序员 C语言
底层探寻alloc都发生了什么
有关alloc之后, 底层代码的执行顺序以及解析
123 1
底层探寻alloc都发生了什么
|
C++ iOS开发 Windows
手把手带你去分析NSObject本质是什么
这篇行文主要讲 NSObject 对象三连问:NSObject本质是什么,占用多少内存,以及怎么去分析。 从下图我们可以看到,我们平时编写的 Objective-C 代码,最终转换到机器语言的过程: https://img-blog.csdnimg.cn/2a6a930a8d3546f896d7527a95c3a576.png 换句话说,Objective-C的面向对象都是基于C\C++的数据结构实现的,或者说其底层实现其实都是C\C++代码。
177 0
手把手带你去分析NSObject本质是什么
|
iOS开发
UIApplication的介绍以及底层实现原理
UIApplication的介绍以及底层实现原理
174 0
UIApplication的介绍以及底层实现原理
|
API 数据安全/隐私保护 iOS开发
核心动画详细阐述(下)
核心动画详细阐述(下)
159 0
核心动画详细阐述(下)
|
数据安全/隐私保护 iOS开发
核心动画详细阐述(上)
核心动画详细阐述
122 0
核心动画详细阐述(上)
|
iOS开发
iOS动画开发之二——UIView动画执行的另一种方式
iOS动画开发之二——UIView动画执行的另一种方式
123 0
|
架构师 开发者 iOS开发
探究ReactiveCocoa 底层KVO封装流程
一、对比原生KVO,初识ReactiveCocoa的KVO * 我们先来看一段代码,通过触屏来动态修改视图背景色 @interface ViewController () @property (nonatomic, strong)UIColor * bgColor; @end @implemen...
3120 0
UIWindow 原理与巧妙使用 makeKeyAndVisible、makeKeyWindow、becomeKeyWindow、resignKeyWindow.你真的懂了吗?
UIWindow 简介 UIWindow 是 UIView 的子类,其在 UIView 添加了一些视图层级,管理视图,转发 UIEvent 对象的属性和 Method。
3265 0