为了更好的显示效果,想要弹出一个半透明UIViewController,刚开始以为只要把目标ViewController的背景设成半透明就行了,哪知动画结束后,背景就变黑了。
百度了一下,还是可以实现的。
首先,动画结束后,背景变黑是因为IOS在动画结束后,把不需要显示的ViewController给删除掉了,动画结束后显示的黑色是Window的的背景色。
要实现背景半透明,有两种方法,
一种通过代码来实现:
@IBAction func PopupAlphaWindow()
{
let sb = UIStoryboard(name: "Main", bundle: nibBundle)
let menuVC = sb.instantiateViewControllerWithIdentifier("MenuViewController") as! MenuViewController
menuVC.view.backgroundColor = UIColor(red: 180, green: 180, blue: 180, alpha: 0.5)
menuVC.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
self.presentViewController(menuVC, animated: true, completion: nil)
}
需要注意的是,要把想要弹出的UIViewController的modalPresentationStyle给设置为UIModalPresentationStyle.OverCurrentContext
第二种,完全在storyboard中设置。
1.设置跳转为Modal
2.设置presentation为Over Current Context
3.设置目标View的背景色透明
4.显示效果见下:
点击按钮
that's all.