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

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个级别:UIWindowLevelNormal(0.0) < UIWindowLevelAlert(1000.0) < UIWindowLevelStatusBar(2000.0)

也可自定义window.windowLevel = 4000.0;

 UIWindow特点

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

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

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

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

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

//cover为frame是[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 = [[NSBundlemainBundle] loadNibNamed:@"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];

}

iOS- 添加UIWindow蒙版相关推荐

  1. iOS基础- 添加UIWindow蒙版

    文章转载来自:https://blog.csdn.net/xiaohe901216/article/details/49948455 开发中经常碰到需要添加一个半透明的蒙版,比如各类提示弹窗等. UI ...

  2. iOS基础-UIWindow

    iOS基础-UIWindow 一.简介: 二.UIWindow的创建过程 一.简介: UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建 ...

  3. Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮...

    Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮 前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP) ...

  4. ios 添加导航栏视图_iOS进度栏(进度视图)

    ios 添加导航栏视图 In this tutorial, we'll be discussing the UIProgressView component and create a progress ...

  5. iOS添加快捷方式到桌面

    涉及:OpenUrl.iOS shceme.Data URI Scheme.JS.Socket 实现功能 将应用的某一个页面或某一个功能以快捷方式形式添加到桌面,用户点击桌面图标,可以唤起应用并打开对 ...

  6. ios 添加日历提醒事件_将日历提醒事件添加到网页

    ios 添加日历提醒事件 Publicizing real-world events on web pages is a great idea, but it assumes that readers ...

  7. iOS基础 UIWindow

    UIWindow iOS程序启动后,创建的第一个视图就是UIWindow,然后才创建控制器的View,并将其添加到UIWindow实例对象上. 尽管iOS支持多个窗口的存在,但最好不要创建多个窗口.

  8. iOS添加测试设备与调试

    转至:http://www.lidaze.com/ 在上一篇博客中,已经购买好了开发账号,既然都交了钱了,就做点有意义的事吧! 要想使用真机测试,需要准备如下: 1.证书:安装到电脑上的cer文件,只 ...

  9. IOS添加KeyMob广告管理库中文教程

    2019独角兽企业重金招聘Python工程师标准>>> 要在手机应用里面展示广告需要在应用里面添加广告管理库,KeyMob广告管理库目前的版本是20150801下载解压后可以看到IO ...

  10. ios添加GPUImage到项目

    1. 把GPUImage.xcodeproj 拖到你的Xcode project 2. 在app的target依赖设置里面添加GPUImage作为Target Dependency 3. 在build ...

最新文章

  1. SpringBoot的修改操作
  2. Torch not compiled with CUDA enabled
  3. js获取 日期 星期 时间
  4. 【贪心】小Y的炮[cannon]题解
  5. 托管数据中心之间的PUE比较(下)
  6. spring--aop总结
  7. arraylist可以存储不同类型吗_创新科技 - 不同防冻液可以混加吗
  8. SharePoint 取消分享时的默认发邮件
  9. VGMP报文封装格式简介
  10. kylo添加登录权限module
  11. 8.线性回归之非线性回归
  12. 学习shell推荐书籍清单
  13. 计算机进行运算时为什么采用二进制数,计算机中为什么采用二进制
  14. linux device 与driver prove 过程
  15. WLAN中的MIMO技术详解
  16. 走进音视频的世界——音视频的基本概念
  17. 首例 3次IPO:前2次申请科创板、创业板均撤回、第3次改为主板、难圆其说变更保代及券商……
  18. 这可能是你近 2 年发论文最好机会!
  19. Linux查看网卡的运行情况,NETSTAT - 查看网络运行情况。
  20. 洛谷 P5740 【深基7.例9】最厉害的学生 题解

热门文章

  1. iOS透明导航栏的平滑过渡(进阶版)
  2. 嵌入式物联网软件开发实战
  3. 修改hosts文件屏蔽广告原理及实现
  4. SpringBoot整合腾讯云直播,生成推拉流配置及工具类详细讲解!
  5. 排列组合、伯努利试验
  6. 阿里巴巴29个屌炸天的开源项目
  7. 微信公众号授权 提示内容与下载文件不符,请检查文件内容或重新上传
  8. linux小白家教学一
  9. NodeJS启动vue项目的坑
  10. 降低网站跳出率9种方法