【问题标题】:How to present a popup view in full screen如何全屏显示弹出视图
【发布时间】:2020-02-02 02:35:54
【问题描述】:

我正在关注视图配置

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

此模式视图位于不同的故事板上。

我想全屏展示这个模型视图。我已经尝试过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)

【问题讨论】:

  • “它不起作用”是什么意思?实际发生了什么?
  • 我已经更新了问题。弹出视图未全屏显示,因为状态栏仍然可见。
  • 您不想在弹出窗口中看到状态栏?这是你的问题吗?
  • 是的。我不想在弹出视图上显示状态栏。

标签: ios swift uinavigationcontroller uitabbarcontroller modalviewcontroller


【解决方案1】:

您可以尝试使用导航控制器进行演示。

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 呈现将提供将更多组件推到顶部的灵活性,从而提供更流畅的导航体验返回上一页的行为。

【讨论】:

    【解决方案2】:

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

        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 中添加一个方法来为其视图设置动画。

    编辑:我阅读了您的回复。您遇到的问题是由于未正确处理状态栏引起的。而不是试图让这个viewcontroller全屏,只需隐藏状态栏 How do I hide the status bar in a Swift iOS app? 想看的时候再带回来。

    【讨论】:

    • 我知道隐藏状态栏。如果您说全屏显示视图是否意味着它也应该在状态栏上方?状态栏是否超出了“全屏”的范围?
    • 是的,您可以将状态栏视为“超出全屏范围”。这是可能的,因此您可以将背景和其他东西放在状态栏后面而不删除它。
    • 好吧,那现在是完全不同的球赛了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2019-10-26
    • 2011-05-22
    • 2015-02-05
    相关资源
    最近更新 更多