如何全屏显示弹出视图

时间:2019-10-03 18:18:29

标签: ios swift uinavigationcontroller uitabbarcontroller modalviewcontroller

我正在关注视图配置

标签栏->导航控制器->视图:单击一个按钮->选择到->另一个视图:单击一个按钮->弹出视图。

此模式视图在另一个故事板上。

我想全屏显示此模型视图。我已经尝试过Presenting modal in iOS 13 fullscreen中提到的此解决方案,但是它不起作用。我还尝试了其他一些解决方案,但弹出视图未全屏显示,状态栏在顶部可见。

如何在全屏模式下显示模式视图?

let storyboard = UIStoryboard(name: "Other", bundle: Bundle.main)

guard let popupVC = storyboard.instantiateViewController(withIdentifier: "PopUpViewController") as? PopUpViewController else {
   print("PopUpViewController not found")
   return
}

popupVC.modalPresentationStyle = .fullScreen

self.present(popupVC, animated: true, completion: nil)

2 个答案:

答案 0 :(得分:0)

也许尝试以这种方式创建视图控制器:

    let popOverVC = UIStoryboard(name: "yourBoard", bundle: nil).instantiateViewController(withIdentifier: "YourViewController") as! YourViewController
    self.addChild(popOverVC)
    let lSs = UIScreen.main.bounds
    popOverVC.view.frame = CGRect(x: 0, y: 0, width: lSs.width, height: lSs.height)
    popOverVC.view.tag = tag
    self.view.addSubview(popOverVC.view)
    popOverVC.didMove(toParent: self)

在弹出视图控制器类中,在viewDidLoad中添加一种动画其视图的方法。

编辑:我已阅读您的回复。您遇到的问题是由于未正确处理状态栏引起的。无需尝试使此veiewcontroller变为全屏显示,只需隐藏状态栏 How do I hide the status bar in a Swift iOS app? 并在您想再次看到它时将其取回。

答案 1 :(得分:0)

您可以尝试与导航控制器一起显示。

let storyboard = UIStoryboard(name: "Other", bundle: Bundle.main)

guard let popupVC = storyboard.instantiateViewController(withIdentifier: "PopUpViewController") as? PopUpViewController else {
   print("PopUpViewController not found")
   return
}

var navigationController = UINavigationController(rootViewController: popupVC)
navigationController.modalPresentationStyle = .fullScreen
self.present(navigationViewController, animated: true, completion: nil)

一种替代方法是使用presentViewController,但是presentViewController只会在当前可见的viewController上模态地呈现一个viewController,而与navigationController一起呈现将提供将更多组件推到顶部的灵活性,从而提供更平滑的效果导航体验,返回上一页的行为。