kmi*_*las 28 xcode modal-dialog transparent ipad swift
(Xcode6,iOS8,Swift,iPad)
我正在尝试创建一个类似于Web的经典模态视图,其中对话框的外部是"灰显的".为了实现这一点,我将模态的视图的backgroundColor的alpha值设置为0.5,如下所示:
self.view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.5)
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,当模态变为全屏时,将删除呈现视图.(导航控制器上的参考透明模态视图).
(这里的概念有点恼火.为什么删除基础视图?根据定义,模态出现在其他内容之上.一旦基础视图被删除,它就不再是模态了.它介于模态和推动之间过渡.瓦娃......反正..)
为了防止这种情况发生,我在父控制器的方法中设置了modalPresentationStyleto ,并在Storyboard中......但没有运气.CurrentContextviewDidLoad
self.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
self.navigationController.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
Run Code Online (Sandbox Code Playgroud)
当模态变为全屏时,如何防止显示视图被删除?
tyvm ..更多信息如下.
也在故事板中,如此(演示文稿:当前上下文)

感谢您的帮助...以下文档:

Ris*_*kov 43
首先,删除代码中模态表示样式的所有显式设置,并执行以下操作:
modalPresentation样式Over Current context 
Provide Context和Define Context.他们似乎工作甚至没有受到控制.Har*_*kar 16
您可以为Swift尝试此代码
let popup : PopupVC = self.storyboard?.instantiateViewControllerWithIdentifier("PopupVC") as! PopupVC
let navigationController = UINavigationController(rootViewController: popup)
navigationController.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
self.presentViewController(navigationController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
对于使用扩展名的swift 4最新语法
extension UIViewController {
func presentOnRoot(`with` viewController : UIViewController){
let navigationController = UINavigationController(rootViewController: viewController)
navigationController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
self.present(navigationController, animated: false, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用
let popup : PopupVC = self.storyboard?.instantiateViewControllerWithIdentifier("PopupVC") as! PopupVC
self.presentOnRoot(with: popup)
Run Code Online (Sandbox Code Playgroud)
小智 13
我在你的代码中看到的唯一问题是你使用CurrentContext而不是OverCurrentContext.
所以,替换这个:
self.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
self.navigationController.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
Run Code Online (Sandbox Code Playgroud)
为了这:
self.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
self.navigationController.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
Run Code Online (Sandbox Code Playgroud)
小智 9
这在 Swift 5.0 中对我有用。在身份检查器中将 Storyboard Id 设置为“destinationVC”。
@IBAction func buttonTapped(_ sender: Any) {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let destVC = storyboard.instantiateViewController(withIdentifier: "destinationVC") as! MyViewController
destVC.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
destVC.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
self.present(destVC, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85903 次 |
| 最近记录: |