说道UIWindow,所有人都不会陌生,我们的第一个可视化iOS程序的显示,一定会用到UIWindow。
它就在这,谁也删不了。
每一个iOS应用都至少有一个window:
1.它包含您应用的可见内容
2.它在将触摸事件传递到您的视图和其他应用程序对象中起到关键作用
3.它处理您的视图控制器的方向改变
以上3句摘抄字官方文档。
除了是app的根视图以外,UIWindow还有很多用处,比如:
1.警告框
2.侧滑栏
3.引导页
等等,我暂时想到了这些
这次是我在写一个引导页的时候,好久不用window,踩了一些坑,分享给大家,省的再帮我踩一脚了
1.UIWindow必须是一个当前持有的对象,比如:我要在一个ViewController中需要window的话,那么这个window必须是ViewController的实例变量。当我想要将window封装在一个util中时,即便window是这个util的实例变量,那么util也必须被当前持有,我一般会将带有window的util做成一个单例。
2.UIWindow的显示,只需要一句:
[self.window makeKeyAndVisible];
3.UIWindow的层级
UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal;
UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert;
UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar __TVOS_PROHIBITED;
这是3个系统预定义的层级,分别代表了正常,警告,以及statusBar的层级,层级越高,越显示在上方,用户能够看到,我们用UIWindow这个组件的时候,一般都会修改一下level,方便控制显示层级。
4.UIWindow的销毁
[_window resignKeyWindow];
_window = nil;
在想要销毁我们创建的window的时候,用这两句就ok了
顺便分享一个利用window实现的比较有意思的小功能: