iOS基础-UIWindow
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相关推荐
- iOS基础 UIWindow
UIWindow iOS程序启动后,创建的第一个视图就是UIWindow,然后才创建控制器的View,并将其添加到UIWindow实例对象上. 尽管iOS支持多个窗口的存在,但最好不要创建多个窗口.
- IOS基础之仿酷狗音乐第1天
IOS基础之仿酷狗音乐第1天 细节较多,涉及字典转模型,tableView 的使用,模态框,自定义模态,音视频播放,全局PCH文件,xib加载,自定义 xib ,info.plist文件的加载,动画的 ...
- iOS基础问答面试题连载-附答案
2017-02-02 timhbw CocoaChina 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便 ...
- IOS基础之iPad的屏幕旋转方向判断
IOS基础之iPad的屏幕旋转方向判断 #pragma mark - 屏幕旋转 - (void)viewWillTransitionToSize:(CGSize)size withTransition ...
- IOS基础之segue使用,
IOS基础之segue使用, segue是接线,接入的意思.控制器与控制器之间的连线. sourceViewControl来源控制器 destinationViewController 目标控制器,以 ...
- IOS基础之打砖块项目演练
IOS基础之打砖块项目演练 本项目涉及CADisplayLink核心动画,各个控件的使用,运行循环,逻辑判断等,if和for,frame坐标的改变,CGPoint结构体,成员变量的赋值,两种手势,拖拽 ...
- ios基础考试题1,实现按钮点击改变位置和图片的透明度和动画的使用
ios基础考试题1,实现按钮点击改变位置和图片的透明度和动画的使用 考察frame,center,bounds的坐标,改变,动画的使用,图片容器的UIImageView的透明度等知识 oc写法 // ...
- IOS基础之使用UICollectionView纯代码创建
IOS基础之使用UICollectionView纯代码创建 资料来自2016-5-12某站. 有一定的参考意义, 涉及plist 转字典模型,UICollectionView使用纯代码加载到View里 ...
- IOS基础之计算器的编写
IOS基础之计算器的编写 // // ViewController.m // Fraction_Calculator // // Created by 鲁军 on 2021/4/26. //#impo ...
最新文章
- 二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度
- 人工智能新手入门学习路线!附学习资源合集
- Python join sorted sort map reduce 函数解析
- springboot数据源不正确_springboot配置多数据源
- 世界-中国-省-市-县 天气预报
- 服务器系统给U盘盘符,五大步骤解决U盘插入电脑盘符不显示问题
- html5圆形导航菜单,圆滑细腻,那些使用圆形导航菜单的漂亮网页设计
- POJ 3159 Candies 差分约束dij
- jfreechart环形图完美实现
- 复杂的三元转化为if() eles()
- 小程序代码压缩之js压缩
- 『常识』罗胖的《罗辑思维》中推荐的书 — 未校正
- 物联网消息服务器,GitHub - tian-yuan/CMQ: go 实现的分布式开源物联网MQTT消息服务器...
- Android关闭软键盘
- 今日头条阅读量怎么刷_今日头条提升头条号阅读量的几大方法
- 浅谈升级到 MacBook Air M1的体验
- 安装程序无法继续,因为您的计算机上安装了更新的internet explorer
- 使用frp配置内网穿透
- 小米人体感应器触发,随机播放网易云音乐
- 弱网测试—Network-Emulator-Toolkit(一)