一周随笔--15.10.06
一周新知识点记录(15.10.06)
一.UIWindow的windowLevel (优先级)
我们在程序中获取通过[UIApplication sharedApplication].keyWindow获取到应用程序的主屏幕,其实并不一定是AppDelegate类中定义的那个window。首先了解UIWindow的一些概念:
UIWindow是一种特殊的UIView,它也可以自定义,在程序中可以同时显示多个UIWindow对象(UIWindow对象通过makeKeyAndVisible方法显示出来。makeKeyAndVisible方法,从方法名字面上看有两层意思:让window成为key window,使得window可见。)。这就不得不说到UIWindow的一个属性windowLevel,这个属性用来表示window对象的优先级。系统提供3个值(UIWindowLevel类型,CGFloat的别称):
UIWindowLevelNormal;
UIWindowLevelAlert;
UIWindowLevelStatusBar;
打印出来一次为0.000000 2000.000000 1000.000000
值越大,window的优先级越高,当然也可以自己设这3个值以外的值,UIWindowLevelNormal为默认值,即对一个UIWindow对象的windowLevel不设为另外两个值,其优先级默认为UIWindowLevelNormal。
怎么理解这个优先级?如果要显示两个UIWindow对象在屏幕上,假如两个对象的优先级一样,即windowLevel值一样,或者不设置,默认都为UIWindowLevelNormal,那么最终显示结果是先显示的那个window在后,后显示的window在前。而对于两个优先级不一样的UIWindow对象,优先级高的在前,低的在后。
回到一开始说的keyWindow,既然一个程序可能存在多个UIWindow对象,那么keyWindow到底是哪个呢?答案是,谁最后显示谁就是keyWindow!注意不是谁在最前面,而是谁最后显示,对于自己定义的UIWindow对象,最后显示指的是谁最后调用makeKeyAndVisible方法。
事实上,除了自己定义的UIWindow对象,系统有一些控件其实也在UIWindow的优先级范畴内,比如UIAlertView,UIActionSheet,虽然这些控件表面上是UIView,但其内部是一个window,这一点通过UIActionSheet显示时打印[UIApplication sharedApplication].keyWindow得到验证,打印的keyWindow所属的类为UIAlertControllerShimPresenterWindow,其windowLevel值为UIWindowLevelAlert,即2000.000000。
另外,对于状态栏,事实上也是以UIWindow的形式存在,其windoeLevel值为UIWindowLevelStatusBar,即1000.000000。因此根据UIWindow的优先级关系,自定义一个windowLevel大于1000的UIWindow对象可以覆盖掉状态栏。
二.UIWindow层级结构
UIWindow的rootViewController分别为普通视图控制器、导航栏控制器、分页栏控制器、模态窗口情况下:
1、普通视图控制器
—UIWindow
——UIView(视图控制器的根view)
2、导航控制器
—UIWindow
——UILayoutContainerView
———UINavigationTransitionView
————UIViewControllerWrapperView
—————UIView(导航控制器的根view)
———UINavigationBar
————。。。。
3、分页栏控制器
—UIWindow
——UILayoutContainerView
———UITransitionView
————UIViewControllerWrapperView
—————UIView(分页栏控制器的根view)
———UITabBar
————。。。。
4、模态窗口
—UIWindow
——UITransitionView
———UIView(视图控制器的根view)
三.KVC/KVO总结
见 博文链接
四.系统本地推送
见 博文链接
转载于:https://www.cnblogs.com/lotheve/p/4857170.html
一周随笔--15.10.06相关推荐
- 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)
分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日) 本周Silverlight学习资源更新: [Silverlight入门系列]ListboxIte ...
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日)
Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日) 本周Silverlight学习资源更新 Silverlight + DomainServi ...
- 分享Silverlight/WPF/Windows Phone一周学习导读(10月30日-11月6日)
分享Silverlight/WPF/Windows Phone一周学习导读(10月30日-11月6日) 本周Silverlight学习资源更新 Silverlight 定位 niejunhua [学习 ...
- 【会议记录】第二次例会(10.06)记录
第二次会议记录 时间:2013.10.06(由于本周五全员无法到齐,推迟至今) 地点 ZJ1#406 记录 黄怀毅 出 勤 情 况 到场 组长:黄怀毅 组员:陈鹏飞 张世钱 张舒彤 肖超玮 请假 无 ...
- 信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序
[题目链接] ybt 1181:整数奇偶排序 OpenJudge NOI 1.10 06:整数奇偶排序 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将奇数和偶数分开,分别排序 ...
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日)
Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日) 本周Silverlight学习资源更新 ArcGIS 10.1 for Server 服务端 ...
- Ubuntu 15.10下安装broadcom无线网卡驱动
更新:我在这篇文章中加入了离线安装网卡驱动的方法. 众所周知,NOI竞赛使用的是noi linux系统,为了提前适应比赛环境,我选择了安装ubuntu 15.10(安装最新版是为了能在生活学习中更多的 ...
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月1日-10月14日)
Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月1日-10月14日) 本周Silverlight学习资源更新 Silverlight 自定义 ScrollView ...
- 10任务栏全屏时老是弹出_Deepin 15.10 发布,深度操作系统
深度操作系统是一个致力于为全球用户提供美观易用.安全可靠的Linux发行版. 深度操作系统基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本.台式机和一体机.深度操作系统( ...
最新文章
- Udacity机器人软件工程师课程笔记(七)-ROS介绍和Turtlesim包的使用
- java.io包和杯子测楼
- 【bzoj2154】Crash的数字表格 莫比乌斯反演
- live http headers_iPhone12手机Live+利用VJD2导播软件直播
- 入门Java开发,这三大知识体系你要知道
- Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建
- c语言printf打印字符串,puts()vs printf()用于以C语言打印字符串
- likely,unlikely宏与GCC内建函数__builtin_expect()
- 毕设题目:Matlab图像加密
- “对症下药”:医疗行业如何实现文件分发
- C语言结构体内存对齐
- GooFlow获取节点/线信息和自定义节点属性
- 线性系列DC-DC转换器工作原理
- 化繁为简的终极指南化繁为简的终极指南
- mac 阿里云ecs配置php,在Mac OS下配置PHP开发环境
- IIS express 配置和500.22错误解决详解
- 【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法
- [英语]ab/abs/ac/acr词根讲解
- 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
- 《游戏编程》第一部 基础篇
热门文章
- mysql执行语句出来全是问号_为什么mysql运行代码后结果栏中的中文全部变成问号?...
- MSSQLSERVER查询分析器连接的方法
- pillow模块 (PIL) 生成验证码
- 政府安全资讯精选 2018年第十期 美国CLOUD Act法案正式通过成为法律;英国发布“网络安全出口”战略 以促进对外贸易...
- java之的读取文件大全
- 线程池 Future 带返回结果
- 缓存系列文章--3.缓存常用更新策略对比(一致性)。
- ASP.NET MVC呼叫WCF Service的方法
- make INSTALL_MOD_PATH=path_dir modules_install
- Android学习笔记19-ImageView实现图片适屏与裁剪