iOS开发,present一个半透明的ViewController,modal透明控制器的方法

前言

众所周知,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出来的控制器都不是透明的,而网上能实现的方式分享很少,特此分享给有需要的同学!

转载于:https://juejin.im/post/5a3a14f1f265da430b7b624d

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值