博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS基础篇 - UIWindow的简单介绍
阅读量:5143 次
发布时间:2019-06-13

本文共 1602 字,大约阅读时间需要 5 分钟。

  UIWindow是本质也是一个UIView,但是 TA 比较的特殊,因为在一个app中永远都只会出现一个UIWindow,而且你在创建项目的时候,无论是空模板还是其他的,Xcode肯定会帮你创建好一个UIWindow。有了UIWindow,再把创建好的UIView添加到UIWindow上,这样运行后就能看到view在屏幕上显示了。

  一个iOS的小程序之所以能在屏幕上显示,完全是因为它有UIWindow。如果没有UIWindow,那么你做的再好看,运行起来都是看不到任何东西的,就黑黑的一片。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // 创建一个窗口对象,并且和屏幕大小一样    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];        // 设置窗口的背景色为白色    self.window.backgroundColor = [UIColor colorWithRed:arc4random() % 256  / 255.0 green:arc4random() % 256 / 255.0     blue:arc4random() % 256 / 255.0 alpha:1.0];        // 初始化与窗口等大的视图    // 讲window比作画板的话,次试图就是画板上的画纸    // 创建一个UIView对象的过程    // 1、初始化,并且指定大小    UIView containerView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];        // 2、设置背景颜色    // 视图如果不给定背景色,默认是透明色    containerView.backgroundColor = [UIColor whiteColor];        // 添加显示,讲视图View添加到window上面进行显示    [self.window addSubview:containerView];        // 让窗口成为应用程序的主窗口(唯一窗口),并且可见    [self.window makeKeyAndVisible];    return YES;}

  上面的代码是利用空模板创建的,就只有AppDelegate,连ViewController都没有,新版本的Xcode不自带空模板,需要的朋友可以去github上面下载空模板,然后放到Xcode里面去。

  把view添加到UIWindow上面的方法有两种,第一种就是上面那种,[self.window addSubview:containerView],还一种是 self.window.rootViewController = containerView,两种方法都可以使用,建议使用第二种,因为第一种存在一些问题,比如说控制器上面可能由按钮,需要监听按钮的点击事件,如果是1,那么按钮的事件应该由控制器来进行管理。但控制器是一个局部变量,控制器此时已经不存在了,但是控制器的view还在,此时有可能会报错。注意:方法执行完,这个控制器就已经不存在了。不通过控制器的view也可以做开发,但是在实际开发中,不要这么做,不要直接把view添加到UIWindow上面去。因为,难以管理。

转载于:https://www.cnblogs.com/shensq/p/5204107.html

你可能感兴趣的文章
【消息队列】 RabbitMQ教程汇总
查看>>
eclipse远程连接hive
查看>>
2011-4-12学习总结
查看>>
VS单元测试"未能加载文件或程序集,或它的某一个依赖项"
查看>>
20145322 20145310 20145318信息安全系统设计基础实验报告
查看>>
Netty——高级发送和接收数据handler处理器
查看>>
如何查看JSP和Servlet版本
查看>>
【Finish】Python Day 9
查看>>
css3实现漂亮的按钮链接
查看>>
最大矩形面积
查看>>
[python基础] python 2与python 3的区别,一个关于对象的未知的坑
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
Enterprise Library 加密应用程序块的设计
查看>>
快速开发 jQuery 插件的 10 大技巧(转)
查看>>
深度剖析post和get的区别
查看>>
云的世界
查看>>
WPF border属性
查看>>
初识DetNet:确定性网络的前世今生
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
linux下启动tomcat----Cannot find ./catalina.sh
查看>>