原理就是创建一个透明的UIViewController
demo中是重新创建了一个storyboard,里面有一个自定义的UIViewController命名为:EasyAlert
class EasyAlert: UIViewController {
static var ins:EasyAlert!
override func viewDidLoad() {
super.viewDidLoad()
}
static var instance:EasyAlert{
get{
if(ins == nil){
let sb = UIStoryboard(name: "Alert", bundle: nil)
ins = sb.instantiateViewControllerWithIdentifier("EasyAlert") as! EasyAlert
ins.view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.3)
ins.modalPresentationStyle = .Custom
//inc.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext;
ins.modalPresentationStyle = .Custom
}
return ins
}
}
@IBAction func close(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: {
()->Void in
})
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
}
}
在需要弹出框的时候,启动创建的storyboard:
@IBAction func showAlert(sender: AnyObject) {
var alert = EasyAlert.instance
presentViewController(alert, animated: true, completion: nil)
}
效果:
