Maison > Questions et réponses > le corps du texte
以下方法不行
UIViewController* controller = self.view.window.rootViewController;
[picker showBoard];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[controller presentViewController:picker animated:YES completion:nil];
怪我咯2017-04-17 17:59:44
Voulez-vous créer une boîte de dialogue contextuelle ? Vous pouvez utiliser l'effet MBProgressHUD
:
La couleur et le contenu peuvent être personnalisés.
Si vous le souhaitez, je peux suivre comment l'utiliser
迷茫2017-04-17 17:59:44
Code copié directement du projet :
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)
}
}
Contrôleur pop-up :
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首页顶部点击昵称的效果