将弹出窗口显示为 iPhone 的全屏

Posted

技术标签:

【中文标题】将弹出窗口显示为 iPhone 的全屏【英文标题】:Display popover as full screen for iPhone 【发布时间】:2018-06-27 11:16:16 【问题描述】:

我正在尝试使用UIPopoverPresentationController 来显示不占用整个屏幕的弹出框。已经检查了this 和其他教程,但是没有用。

这是我的代码:

  @IBAction func temp(_ sender: UIButton) 
    let vc = UIStoryboard(name: "StayView", bundle: nil).instantiateViewController(withIdentifier: "StayViewPopOverViewController") as! StayViewPopOverViewController

    vc.modalPresentationStyle = .popover
    vc.preferredContentSize = CGSize(width: 180, height: 75)

    let popover = vc.popoverPresentationController!
    popover.sourceView = self.btnTemp
    popover.sourceRect = self.btnTemp.bounds
    popover.delegate = self
    self.present(vc, animated: true, completion: nil)

我的委托方法:

 func adaptivePresentationStyleForPresentationController(controller: UIPresentationController!) -> UIModalPresentationStyle 
    return .none

但覆盖整个屏幕。 我试图在委托方法上设置断点,但解释器并没有就此停止。

anyBody 有任何解决方案或任何建议吗?

更新:我想这样实现:

【问题讨论】:

【参考方案1】:

更新以下几行

 vc.modalPresentationStyle = .popover
 vc.preferredContentSize = CGSize(width: 180, height: 75)

vc.modalPresentationStyle = .overFullScreen
vc.preferredContentSize = view.frame.size

【讨论】:

在`let popover = vc.popoverPresentationController!`上给出零错误 我不想全屏 那你想要什么,你能不能更新问题以便给出正确的答案 我只想要尺寸为 (width: 180, height: 75) 的 popOver【参考方案2】:

我终于得到了答案。 只需要像这样更新我的委托方法:

 func adaptivePresentationStyle(
    for controller: UIPresentationController,
    traitCollection: UITraitCollection)
    -> UIModalPresentationStyle 
        return .none

就是这样...效果很好!!!

【讨论】:

以上是关于将弹出窗口显示为 iPhone 的全屏的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 上的 UIPopoverPresentationController 始终全屏显示

如何使 jQuery Mobile 弹出窗口出现在设备的全屏中

故事板:如何弹出不全屏

如何将弹出窗口添加到折线中,当鼠标悬停在地图上的折线上时显示传单

UIPopoverPresentationController 始终显示全屏模式弹出窗口

将弹出窗口放入 td