ios 遮罩层 全屏显示(有的时候导航栏会遮挡) 引导 --新手笔记

本文介绍了如何在iOS应用中创建全屏显示的遮罩层,尤其针对导航栏可能遮挡的情况进行了处理。通过定义一个UIWindow实例,循环添加带有点击事件的图片来实现遮罩层,并在点击图片时根据tag值移除对应的视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.最简单的遮罩层 -- 就是视图上面多张图片的---删除

1.定义一个 UIWindow 用来全屏显示 整个图片

static UIWindow *__sheetWindow = nil;

2.循环创建多张图片-给图片添加点击事件--然后添加到---  __sheetWindow上

- (void)addMaskLayerView  {
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
    NSString *name = [defaults objectForKey:@"name"];//根据键值取name判断下次是否出现
    
    if (![name isEqualToString:@"333"]) {
        NSArray * imageArr = @[@"guide805@2x", @"guide804@2x", @"guide803@2x", @"guide802@2x", @"guide801@2x"];
        UIWindow *window = [[UIWindow alloc] initWithFrame:(CGRect) {{0.f, 0.f}, [[UIScreen mainScreen] bounds].size}];
        window.backgroundColor = [UIColor clearColor];
        window.windowLevel = UIWindowLevelNormal;
        window.alpha = 1.f;
        window.hidden = NO;
        for (int i = 0; i < 4; i++) {
            self.imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, VIEW_W, VIEW_H)];
            _imgView.userInteractionEnabled = YES;
            _imgView.tag = 111 +i;
            [self.view addSubview:_imgView];
            UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
            //为图片添加手势
            [_imgView addGestureRecognizer:singleTap];
            _imgView.image = [UIImage imageNamed:imageArr[i]];
            [window addSubview:_imgView];
        }
        __sheetWindow = window;
    }

}


3.移除window上得图片----根据tag值 当点击图片时候移除视图

- (void)handleSingleTap:(UITapGestureRecognizer *)gestureRecognizer {//遮罩层移除
    NSLog(@"方法走了没1");
    UIView *targetview = gestureRecognizer.view;
    
    if(targetview.tag == 111) {
        UIView *subviews  =  [__sheetWindow viewWithTag:111];
        [subviews removeFromSuperview];
        __sheetWindow.hidden = YES;
    }
    if(targetview.tag == 112) {
        UIView *subviews  = [__sheetWindow viewWithTag:112];;
        [subviews removeFromSuperview];
    }
    if(targetview.tag == 113) {
        UIView *subviews  = [__sheetWindow viewWithTag:113];;
        [subviews removeFromSuperview];
    }
    if(targetview.tag == 114) {
        UIView *subviews  = [__sheetWindow viewWithTag:114];;
        [subviews removeFromSuperview];
    }
    //判断 name 如果333。已经修改 不在显示
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
    [defaults setObject:@"333" forKey:@"name"];
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值