一周新知识点记录(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相关推荐

  1. 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)

    分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日) 本周Silverlight学习资源更新: [Silverlight入门系列]ListboxIte ...

  2. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日) 本周Silverlight学习资源更新 Silverlight + DomainServi ...

  3. 分享Silverlight/WPF/Windows Phone一周学习导读(10月30日-11月6日)

    分享Silverlight/WPF/Windows Phone一周学习导读(10月30日-11月6日) 本周Silverlight学习资源更新 Silverlight 定位 niejunhua [学习 ...

  4. 【会议记录】第二次例会(10.06)记录

    第二次会议记录 时间:2013.10.06(由于本周五全员无法到齐,推迟至今) 地点 ZJ1#406 记录 黄怀毅 出 勤 情 况 到场 组长:黄怀毅 组员:陈鹏飞 张世钱 张舒彤 肖超玮 请假 无 ...

  5. 信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序

    [题目链接] ybt 1181:整数奇偶排序 OpenJudge NOI 1.10 06:整数奇偶排序 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将奇数和偶数分开,分别排序 ...

  6. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日) 本周Silverlight学习资源更新 ArcGIS 10.1 for Server 服务端 ...

  7. Ubuntu 15.10下安装broadcom无线网卡驱动

    更新:我在这篇文章中加入了离线安装网卡驱动的方法. 众所周知,NOI竞赛使用的是noi linux系统,为了提前适应比赛环境,我选择了安装ubuntu 15.10(安装最新版是为了能在生活学习中更多的 ...

  8. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月1日-10月14日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月1日-10月14日) 本周Silverlight学习资源更新 Silverlight 自定义 ScrollView ...

  9. 10任务栏全屏时老是弹出_Deepin 15.10 发布,深度操作系统

    深度操作系统是一个致力于为全球用户提供美观易用.安全可靠的Linux发行版. 深度操作系统基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本.台式机和一体机.深度操作系统( ...

最新文章

  1. Udacity机器人软件工程师课程笔记(七)-ROS介绍和Turtlesim包的使用
  2. java.io包和杯子测楼
  3. 【bzoj2154】Crash的数字表格 莫比乌斯反演
  4. live http headers_iPhone12手机Live+利用VJD2导播软件直播
  5. 入门Java开发,这三大知识体系你要知道
  6. Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建
  7. c语言printf打印字符串,puts()vs printf()用于以C语言打印字符串
  8. likely,unlikely宏与GCC内建函数__builtin_expect()
  9. 毕设题目:Matlab图像加密
  10. “对症下药”:医疗行业如何实现文件分发
  11. C语言结构体内存对齐
  12. GooFlow获取节点/线信息和自定义节点属性
  13. 线性系列DC-DC转换器工作原理
  14. 化繁为简的终极指南化繁为简的终极指南
  15. mac 阿里云ecs配置php,在Mac OS下配置PHP开发环境
  16. IIS express 配置和500.22错误解决详解
  17. 【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法
  18. [英语]ab/abs/ac/acr词根讲解
  19. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
  20. 《游戏编程》第一部 基础篇

热门文章

  1. mysql执行语句出来全是问号_为什么mysql运行代码后结果栏中的中文全部变成问号?...
  2. MSSQLSERVER查询分析器连接的方法
  3. pillow模块 (PIL) 生成验证码
  4. 政府安全资讯精选 2018年第十期 美国CLOUD Act法案正式通过成为法律;英国发布“网络安全出口”战略 以促进对外贸易...
  5. java之的读取文件大全
  6. 线程池 Future 带返回结果
  7. 缓存系列文章--3.缓存常用更新策略对比(一致性)。
  8. ASP.NET MVC呼叫WCF Service的方法
  9. make INSTALL_MOD_PATH=path_dir modules_install
  10. Android学习笔记19-ImageView实现图片适屏与裁剪