iOS- 添加UIWindow蒙版

原创 2015年11月20日 16:26:53

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

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 = [[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开发 自定义一个全屏的蒙板(导航栏也能遮挡住)

__weak typeof(self)weakSelf = self; [UIView animateWithDuration:0.5 animations:^{ weakSe...

iOS开发——蒙版(引导介绍遮罩)工具类

实现新手指引的蒙版常用两种方式:    第一种:黑色半透明view + 图片 +点击事件消失= 蒙版效果       优点:开发速度快,简单快捷              代码实现非常简单,突...

iOS开发-UIWindow的用法-创建悬浮按钮

UIWindow如何使用?开发中有何用? 我们在开发中可能经常会遇到需要在TableView上使用悬浮按钮的情况,这时 如果直接在TableVIewController上贴Button的话会导致这...

iOS UIWindow最上层添加视图或者其他控件

UIView *view = [[UIView alloc]initWithFrame:CGRectMake(self.view.frame.size.width-50, 20, 30, 30)];...
  • saw471
  • saw471
  • 2016年10月25日 11:20
  • 6394

iOS CoreAnimation专题——技巧篇(三)Layer Masking - 图层蒙版

如果你使用过Photoshop,你一定听说过蒙版的概念。 而在CoreAnimation中,框架同样为我们提供了这样的功能,CALayer拥有一个属性叫做mask,作为这个CALayer对象的蒙版,m...

CALayer mask属性实现蒙板效果

相信很多人在ios上实现控件圆角的时候都用过:cornerRadius这个属性,例如实现圆形头像,一般我会这么写: self.headImageView.layer.masksToBounds = ...

制作蒙板(ios)

已知:1.图片: UIImage *normal ;(被赋值,此值为一个蒙板的形状)         normal = [UIImage imageNamed:@"chatfrom_b...

利用UIWindow自定义类似UIAlertView的弹出框

项目中经常用到类似iOS原生的UIAlertView的弹出框,普通的用视图覆盖的方式是不能覆盖掉NavigationBar的,所以需要用到UIWindow来实现效果。 1、首先需要创建一个UIWin...

IOS学习笔记--利用UIWindow实现自定义AlertView

最近项目开发,要做一个文件下载功能,本来想通过UIAlertView在下载过程中屏幕展示下载进度,但是在将UIProgressView作为子视图添加到UIAlertView时,一直看不到进度条,在网上...

IOS自定义弹出框

IOS中弹出框是经常会使用的,有些时候系统提供的比如说UIAlertView,不能够满足我们实际的需求,这个时候需要自定义弹出框。自定义弹出框的本质是:在当前的UIView上面显示另外一个UIView...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS- 添加UIWindow蒙版
举报原因:
原因补充:

(最多只允许输入30个字)