UIWindow 使用介绍

一、简介

    UIWindos可以理解为一个app的窗口,作为Controller的容器,一个App至少拥有一个window,且只有一个keyWindow,也可以有多个Window.

   keyWindow:指当前的主window,屏幕的最外层的window,所以有多个window时需要遍历获取目的window.

   window可以不占满全屏幕,可以在屏幕的某个frame位置。

二、UIWindowLevel介绍

    window显示层级规则:由于window的显示层级是根据windowLevel来决定的,level高的window显示在上面,同level的keyWindow显示在前面。

    系统定义的level值。

//CFFloat值 UIWindowLevelNormal = 0.0  |  UIWindowLevelStatusBar = 1000.0  | UIWindowLevelAlert = 2000.0  | 

三、UIWindow属性方法


需求:添加一个全局按钮

思想:全局添加一个按钮大小的window,添加点击和拖动手势。

注意:

1.创建一个window之后,需要设置rootViewContorller

2.一般的主window,如果需要显示,则需要创建makeKeyAddVisibel或者将isHidden置为false

疑问?

1.如果没有在AppDelegate中添加全局变量,有时候在AppDelegate之外添加会失败,为什么?

2.怎么移除创建的window,是设置为hidden吗?

扩展

决绝直接更换rootViewController造成的图层叠加问题。


在AppDelegate中定义切showViewContorller:方法,在里面实现rootViewController的更换,在需要切换的页面调用代理实例进行切换。

示例代码[OC]

-(void)resetRootController:(UIViewController *)controller{
    UIWindow *window = self.window;
    [self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; //每一个视图都执行移除
    self.window.rootViewController = nil;
    [self.window resignKeyWindow];
    [self.window removeFromSuperview];
    [window setRootViewController:controller];
    [window makeKeyWindow];
}

阅读更多
版权声明:本文为博主原创文章,转载请注明 https://blog.csdn.net/qq_14920635/article/details/79971844
文章标签: UIWindow
个人分类: iOS Swift 问题解决
相关热词: uiwindow
上一篇iOS闭包
下一篇iOS iPhoneX 适配
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭