美文网首页iOS基本功
iOS开发,present一个半透明的ViewControlle

iOS开发,present一个半透明的ViewControlle

作者: aiq西米 | 来源:发表于2017-03-09 16:22 被阅读1471次

    前言

    众所周知,iOS显示新的控制器方法通常只有三个:A.push方式; B.modal方式; C.设置为keywindow的根控制器。 而最灵活的貌似是modal方式,几乎可以在随处冒出来。

    使用

    既然modal一个控制器这么好用,设置完属性让控制器消失也方便,要处理一些比较复杂的业务时,如果你创建一个View,要设置代理等方式添加事件监听,而控制器可以直接处理,那我们最好选择使用modal啦。

    现在比较流行的登录方式,就是用modal方式实现的,在你需要登录才能操作的界面,直接modal出登录控制器:

    LoginViewController *loginVc = [[LoginViewController alloc]init];
    
    [self presentViewController:loginVc animated:YES completion:nil];
    

    而你想让登录控制器消失,直接在登录控制器里一句代码搞定:

    [self dismissViewControllerAnimated:YES completion:nil];
    

    回归主题

    废话说了这么多,主要是为了简单介绍一下modal的基本用法。好了,下面正式上干货。

    modal方式present一个半透明的ViewController,直接上代码:
    
    MSTestViewController *vc = [[MSTestViewController alloc] init];
    vc.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
    
    float version = [UIDevice currentDevice].systemVersion.floatValue;
    if (version < 8.0) { // iOS 7 实现的方式略有不同(设置self)
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    // iOS8以下必须使用rootViewController,否则背景会变黑
    [self.view.window.rootViewController presentViewController:vc animated:YES completion:^{
    }];
    } else { // iOS 8 以上实现(设置vc)
    
    vc.modalPresentationStyle = UIModalPresentationOverCurrentContext|UIModalPresentationFullScreen;
    //如果控制器属于navigationcontroller或者tababrControlelr子控制器,不使用UIModalPresentationFullScreen 的话, bar 会盖住你的modal出来的控制器
    [self presentViewController:vc animated:YES completion:^{
    // 也可以在这里做一些完成modal后需要做得事情
    }];
    }
    
    
    modal透明控制器演示.gif

    最后

    很多时候,我们modal出来的控制器都不是透明的,而网上能实现的方式分享很少,特此分享给有需要的同学!

    相关文章

      网友评论

        本文标题:iOS开发,present一个半透明的ViewControlle

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