美文网首页
iOS - 三种弹窗方式

iOS - 三种弹窗方式

作者: CDLOG | 来源:发表于2018-07-25 18:10 被阅读237次

    1,简单弹窗(获取app窗口,直接添加view)

    之前的写法: UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow这样写是不安全的,如果应用程序没有跳转,这种写法还算是可行的,但是如果应用程序出现了跳转(分享跳转到其他APP,访问系统相册等),这时返回原APP,你会发现加载原窗口上的视图位置会发生明显偏移,查阅了一些资料,发现如果写成
    UIWindow *keyWindow = [[[UIApplication sharedApplication]delegate]window];
    [keyWindow addSubview:coverView];
    就不会出现上述问题
    没有什么弹窗是在[[[UIApplication sharedApplication] delegate] window]上add自定义view解决不了的,移除用 [self removeFromSuperview];

    2,modal控制器

    直接modal出来的控制器,会先移除掉原来的控制器,如过想制造modal出来的控制器有半透明效果,需要设置

    modalVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
    

    但是这样设置会出现一个问题,那就是这个modalVC的所有控件都会是半透明的状态,要设置控制器view的背景色为半透明(不能直接设置 view半透明,否则子控件也会半透明)
    核心代码

     ModalViewController *VC  = [[ModalViewController alloc]init];
        [VC setModalPresentationStyle:UIModalPresentationOverFullScreen];
        VC.textB = ^(NSString *text) {
            NSLog(@"%@",text);
        };
        [self presentViewController:VC animated:YES completion:nil];
    
    [self.view setBackgroundColor:[UIColor colorWithWhite:0.5 alpha:0.5]];
    
    

    3,蒙版+model控制器

    1,model控制器下面是一个蒙版,蒙版遮挡住导航栏
    首先创建一个hudView,作为全屏蒙版,依次添加蒙版和控制器以及控制器的view到window。
    代码如下
    添加:

    self.filter = [[FiltratePage alloc] initWithType:filtrate_buy];
       self.filter.modalPresentationStyle = UIModalPresentationOverFullScreen;
        UIWindow * window = [UIApplication sharedApplication].keyWindow;
        self.hudView =[[UIView alloc]init];
        [self.hudView Balck_showHud];
        [window addSubview:self.hudView];
        [window.viewController addChildViewController:self.filter];
        [window addSubview:self.filter.view];
        [self.filter.view mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(window);
        }];
    

    删除:

    [self.hudView removeFromSuperview];
    [self.filter.view removeFromSuperview];
    

    github传送门

    相关文章

      网友评论

          本文标题:iOS - 三种弹窗方式

          本文链接:https://www.haomeiwen.com/subject/vkdpmftx.html