iOS学习—制作全局遮罩

在.h文件中线声明show()方法

  • (void)show;

.m文件中添加全屏遮罩,在遮罩上添加了一个选择框并添加了底部弹出的动画,可自行在其中添加tableview、pickerview等其他视图,并添加了点击选择框视图外区域隐藏

复制代码
#import "MaskView.h"

@interface MaskView()

@property (nonatomic ,strong) UIView *deliverView; //底部View
@property (nonatomic ,strong) UIView *BGView; //遮罩

@end

@implementation MaskView

- (instancetype)initWithFrame:(CGRect)frame {
    if ([super initWithFrame:frame]) {
        
    }
    return self;
}

- (void)appearClick {
 // ------全屏遮罩
    self.BGView = [[UIView alloc] init];
    self.BGView.frame = [[UIScreen mainScreen] bounds];
    self.BGView.tag = 100;
    self.BGView.backgroundColor = [HexColor(@"#000000") colorWithAlphaComponent:0.0];
    self.BGView.opaque = NO;
    
    //--UIWindow的优先级最高,Window包含了所有视图,在这之上添加视图,可以保证添加在最上面
    UIWindow *appWindow = [[UIApplication sharedApplication] keyWindow];
    [appWindow addSubview:self.BGView];
    
    // ------给全屏遮罩添加的点击事件
    UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(exitClick)];
    gesture.numberOfTapsRequired = 1;
    gesture.cancelsTouchesInView = NO;
    [self.BGView addGestureRecognizer:gesture];
    
    [UIView animateWithDuration:0.3 animations:^{
        self.BGView.backgroundColor = [HexColor(@"#000000") colorWithAlphaComponent:0.24];
    }];
    
    // ------底部弹出的View
    self.deliverView = [[UIView alloc] init];
//    self.deliverView.frame = CGRectMake(0, SCREEN_WIDTH, SCREEN_WIDTH, 306);
    ViewRadius(self.deliverView, 16);
    self.deliverView.backgroundColor = myCellColor;
    [appWindow addSubview:self.deliverView];
    [self.deliverView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.bottom.mas_equalTo(0);
        make.width.mas_equalTo(kWidth);
        make.height.mas_equalTo(306);
    }];
    // ------View出现动画
    self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);
    [UIView animateWithDuration:0.5 animations:^{
        self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, 0.01);
    }];
    
    [self.deliverView addSubview:self.tableView];
    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.mas_equalTo(18);
        make.left.mas_equalTo(0);
        make.width.mas_equalTo(kWidth);
        make.height.mas_equalTo(48 * 5);
    }];
    
}
/**
 * 功能: View退出
 */
- (void)exitClick {
    NSLog(@"====");
    [UIView animateWithDuration:0.5 animations:^{
        self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);
        self.deliverView.alpha = 0.2;
        self.BGView.alpha = 0;
    } completion:^(BOOL finished) {
        [self.BGView removeFromSuperview];
        [self.deliverView removeFromSuperview];
    }];
}

@end
相关推荐
呵呵哒( ̄▽ ̄)"25 分钟前
专项智能练习(行为主义学习理论)
学习
贝塔实验室27 分钟前
两种常用的抗单粒子翻转动态刷新方法
论文阅读·经验分享·笔记·科技·学习·程序人生·fpga开发
你真的可爱呀1 小时前
5.Three.js 学习(基础+实践)
学习·three.js
茯苓gao10 小时前
STM32G4 电流环闭环
笔记·stm32·单片机·嵌入式硬件·学习
easy202010 小时前
机器学习的本质:从跑模型到真正解决问题
笔记·学习·机器学习
普蓝机器人12 小时前
AutoTrack-IR-DR200仿真导航实验详解:为高校打造的机器人学习实践平台
人工智能·学习·机器人·移动机器人·三维仿真导航
百思可瑞教育13 小时前
使用UniApp实现一个AI对话页面
javascript·vue.js·人工智能·uni-app·xcode·北京百思可瑞教育·百思可瑞教育
非凡ghost14 小时前
AOMEI Partition Assistant磁盘分区工具:磁盘管理的得力助手
linux·运维·前端·数据库·学习·生活·软件需求
m0_5782678614 小时前
从零开始的python学习(九)P142+P143+P144+P145+P146
笔记·python·学习