iOS基础- 添加UIWindow蒙版

文章转载来自:https://blog.csdn.net/xiaohe901216/article/details/49948455

开发中经常碰到需要添加一个半透明的蒙版,比如各类提示弹窗等。

UIWindow图层上添加蒙版

优先级

例如蒙版也可添加到self.navigationController.view图层上或者self.tabBarController.view图层上

self.view < self.navigationController.view < self.tabBarController.view < UIWindow


UIWindow:一般作为UIView的容器

 应用场景

    当需要将某些控件显示到最上层时就可以创建一个window,然后将空间添加到window

    支付宝、记账类软件认证界面(手势解锁)大部分都是用UIWindow做的

 注意

    1.一般情况下不要随意创建window,不要滥用,因为只要创建就会自动添加到界面上(不用addsubview!!!),那么如果滥用window会导致应用程序的层级结构混乱

    2.window是有级别的,级别越高就显示在越顶层(键盘级别最高)

    默认有3个级别:UIWindowLevelNormal0.0 < UIWindowLevelAlert1000.0 < UIWindowLevelStatusBar2000.0

    也可自定义window.windowLevel = 4000.0;

 UIWindow特点

    只要创建就会自动添加到界面上

    系统弹出UIAlertView、弹出键盘、来短信、来电、电量不足等也是用的UIWindow

    如果需要window监听点击事件需要设置frame,因为window创建后没有frame

        UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    移除window可在点击方法里直接 window = nil;

 

//coverframe[UIScreen mainScreen].bounds的半透明或透明色button

UIWindow *window = [UIApplication sharedApplication].keyWindow;

[window addSubview:cover];


上个案例,自定义的一个指纹锁弹窗,其中touchidView为xib自定义的view样式,具体可根据实际需要自定义以及添加代理等方法。

#pragma mark - 添加touchIDView弹窗

- (void)popCoverview{

    

    //设置蒙版

    self.coverView = [[UIViewalloc]initWithFrame:[UIScreenmainScreen].bounds];

    self.coverView.backgroundColor = [UIColorblackColor];

    self.coverView.alpha =0.6;

    //添加蒙版上弹窗视图

    self.touchidView = [[NSBundlemainBundleloadNibNamed:@"DDTouchidView"owner:selfoptions:nil].lastObject;

    self.touchidView.center =self.coverView.center;

    self.touchidView.delegate =self;

    

    //实现弹出方法

    UIWindow *window = [UIApplicationsharedApplication].keyWindow;

    window.windowLevel =UIWindowLevelNormal;

    

    [window addSubview:self.coverView];

    [window addSubview:self.touchidView];

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值