搜索

首页  >  问答  >  正文

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

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

[picker showBoard];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[controller presentViewController:picker animated:YES completion:nil];
PHP中文网PHP中文网2889 天前446

全部回复(2)我来回复

  • 怪我咯

    怪我咯2017-04-17 17:59:44

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

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

    回复
    0
  • 迷茫

    迷茫2017-04-17 17:59:44

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

    
    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首页顶部点击昵称的效果

    回复
    0
  • 取消回复