iOS模态推送一个半透明弹窗

在一个页面中给一个半透明页面:

// 跳到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];
**带了导航过去。记得在那边隐藏**

---来自涛胖子的工作笔记

你可能感兴趣的:(iOS模态推送一个半透明弹窗)