在一个页面中给一个半透明页面:
// 跳到popWindow
let popVc = UIStoryboard(name: "ListViewStoryBoard", bundle: nil).instantiateViewController(withIdentifier: "PopWindowController") as! PopWindowController // 初始化
popVc.modalPresentationStyle = .overFullScreen // 这句代码比较重要,不然你会发现你的半透明页面上面的控件也会半透明。
self.present(popVc, animated: true, completion: nil)
在你的半透明页面中设置一下:
// 这个btn 是我在storyboard上面添加了一个btn覆盖view,让他在点击灰色部分的时候走dismiss 方法
@IBOutlet weak var dismissBtn: UIButton! {
didSet{
dismissBtn.backgroundColor = UIColor.gray
dismissBtn.alpha = 0.5
}
}
// 在load方法中给view 设置透明。这样你的一个半透明的模态推送弹窗就搞定了
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.clear
}
当然这是比较简单的方法,也是我在项目中用的比较多的。这个界面的所有操作都可以通过代理回调到你需要的界面。。
***OC版本
PopViewController *popVc = [[UIStoryboard storyboardWithName:@"HomeStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"PopViewController"];
self.definesPresentationContext = YES; //
UINavigationController *navVc = [[UINavigationController alloc] initWithRootViewController:popVc]; // 导航栏带过去。
navVc.view.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.5]; // 用这种方法设置颜色,子空间就不会透明了,不能直接通过[UIColor redColor]这种方式。
navVc.modalPresentationStyle = UIModalPresentationCustom;
[self presentViewController:navVc animated:NO completion:nil];
**带了导航过去。记得在那边隐藏**
---来自涛胖子的工作笔记