首页 > 怎么弹出一个半透明的UIViewController?

怎么弹出一个半透明的UIViewController?

以下方法不行
UIViewController* controller = self.view.window.rootViewController;

[picker showBoard];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[controller presentViewController:picker animated:YES completion:nil];

直接从项目中拷贝过来的代码:


HomeViewController.swift

//点击的事件
@objc private func titleBtnClick(){
        //创建弹出控制器
        let popVc = PopViewController()
        //设置控制器的Model样式
        popVc.modalPresentationStyle = .Custom
        
        //设置转场的代理
        popVc.transitioningDelegate = self
        
        //弹出控制器
        presentViewController(popVc, animated: true, completion: nil)
    }
    
        // MARK: - 自定义转场的代理方法
extension HomeViewController :UIViewControllerTransitioningDelegate {
    
    //改变弹出窗口的Frame
    func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? {
        
        return LMSUIPresentationController(presentedViewController: presented, presentingViewController: presenting)
    }


}

弹出的控制器:
LMSUIPresentationController.m

import UIKit

class LMSUIPresentationController: UIPresentationController {
    
    private lazy var maskView : UIView = UIView()
    
    override func containerViewWillLayoutSubviews() {
        super.containerViewWillLayoutSubviews()
        
        //设置弹出View的尺寸
        presentedView()?.frame = CGRectMake(100, 55, 180, 240)
        
        //添加蒙版
        setUpMask()
        
    }
    
}

extension LMSUIPresentationController {
    private func setUpMask() {
        
        //添加蒙版
        containerView?.insertSubview(maskView, atIndex: 0)
        
        //设置蒙版的属性
        maskView.backgroundColor = UIColor(white: 0.7, alpha: 0.2)
        maskView.frame = containerView!.bounds
        
        //添加手势
        let tapGes = UITapGestureRecognizer(target: self, action: "maskViewClick")
        maskView.addGestureRecognizer(tapGes)
        
    }
}


extension LMSUIPresentationController {
    @objc private func maskViewClick() {
        presentedViewController.dismissViewControllerAnimated(true, completion: nil)
    }
}

PopViewController.swift

import UIKit

class PopViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.redColor()
    }
}

    运行出来的效果类似于sinaWeibo首页顶部点击昵称的效果

你是想做一个弹出提示框吗? 可以使用 MBProgressHUD
效果:

颜色和内容可以自定义。
如果是要这个,我可以再把使用方法追答一下

【热门文章】
【热门文章】