iOS基础-UIWindow

  • 一、简介:
  • 二、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地址

iOS基础-UIWindow相关推荐

  1. iOS基础 UIWindow

    UIWindow iOS程序启动后,创建的第一个视图就是UIWindow,然后才创建控制器的View,并将其添加到UIWindow实例对象上. 尽管iOS支持多个窗口的存在,但最好不要创建多个窗口.

  2. IOS基础之仿酷狗音乐第1天

    IOS基础之仿酷狗音乐第1天 细节较多,涉及字典转模型,tableView 的使用,模态框,自定义模态,音视频播放,全局PCH文件,xib加载,自定义 xib ,info.plist文件的加载,动画的 ...

  3. iOS基础问答面试题连载-附答案

    2017-02-02 timhbw CocoaChina 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便 ...

  4. IOS基础之iPad的屏幕旋转方向判断

    IOS基础之iPad的屏幕旋转方向判断 #pragma mark - 屏幕旋转 - (void)viewWillTransitionToSize:(CGSize)size withTransition ...

  5. IOS基础之segue使用,

    IOS基础之segue使用, segue是接线,接入的意思.控制器与控制器之间的连线. sourceViewControl来源控制器 destinationViewController 目标控制器,以 ...

  6. IOS基础之打砖块项目演练

    IOS基础之打砖块项目演练 本项目涉及CADisplayLink核心动画,各个控件的使用,运行循环,逻辑判断等,if和for,frame坐标的改变,CGPoint结构体,成员变量的赋值,两种手势,拖拽 ...

  7. ios基础考试题1,实现按钮点击改变位置和图片的透明度和动画的使用

    ios基础考试题1,实现按钮点击改变位置和图片的透明度和动画的使用 考察frame,center,bounds的坐标,改变,动画的使用,图片容器的UIImageView的透明度等知识 oc写法 // ...

  8. IOS基础之使用UICollectionView纯代码创建

    IOS基础之使用UICollectionView纯代码创建 资料来自2016-5-12某站. 有一定的参考意义, 涉及plist 转字典模型,UICollectionView使用纯代码加载到View里 ...

  9. IOS基础之计算器的编写

    IOS基础之计算器的编写 // // ViewController.m // Fraction_Calculator // // Created by 鲁军 on 2021/4/26. //#impo ...

最新文章

  1. 二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度
  2. 人工智能新手入门学习路线!附学习资源合集
  3. Python join sorted sort map reduce 函数解析
  4. springboot数据源不正确_springboot配置多数据源
  5. 世界-中国-省-市-县 天气预报
  6. 服务器系统给U盘盘符,五大步骤解决U盘插入电脑盘符不显示问题
  7. html5圆形导航菜单,圆滑细腻,那些使用圆形导航菜单的漂亮网页设计
  8. POJ 3159 Candies 差分约束dij
  9. jfreechart环形图完美实现
  10. 复杂的三元转化为if() eles()
  11. 小程序代码压缩之js压缩
  12. 『常识』罗胖的《罗辑思维》中推荐的书 — 未校正
  13. 物联网消息服务器,GitHub - tian-yuan/CMQ: go 实现的分布式开源物联网MQTT消息服务器...
  14. Android关闭软键盘
  15. 今日头条阅读量怎么刷_今日头条提升头条号阅读量的几大方法
  16. 浅谈升级到 MacBook Air M1的体验
  17. 安装程序无法继续,因为您的计算机上安装了更新的internet explorer
  18. 使用frp配置内网穿透
  19. 小米人体感应器触发,随机播放网易云音乐
  20. 弱网测试—Network-Emulator-Toolkit(一)

热门文章

  1. opencv支持多种流行视频格式文件的读取
  2. notepad卡顿_轻量级的文本编辑器之Notepad
  3. 【背赛笔记 常用写法 模版】Python蓝桥杯备赛笔记记录 【建议收藏!】
  4. OBJ格式导入OpenGL中遇到的问题
  5. mysql查询锁表并解锁_mysql锁表查询和解锁操作
  6. 基于 MDK5实现STM32串口通信
  7. arcgis中创建逼真的三维视图
  8. SQL中GRANT(分配权限)和REVOKE(回收权限)向用户授权或取消授权
  9. 怎么在pyqt界面上添加新菜单栏选项_PyQt:添加选项卡
  10. 自然语言处理—阅读理解