【问题标题】:how to use popover controller in iPhone如何在 iPhone 中使用弹出框控制器
【发布时间】:2018-10-29 20:38:35
【问题描述】:

我无法在 iPhone 中将弹出框控制器显示为弹出框,但它在 iPad 上运行良好。

关于如何在 iPhone 中执行此操作的任何想法。

据我搜索,我找不到任何东西。

无论如何,让弹出框出现在 iphone 中,就像它在 iPad 中一样,非常感谢!

【问题讨论】:

  • 这并不能解决我的问题
  • "一般情况下,弹出框应保留用于 iPad 应用程序。在 iPhone 应用程序中,通过在全屏模式视图而不是弹出框中显示信息来利用所有可用的屏幕空间。获取相关指导,见模态。”

标签: ios uipopovercontroller uipopover uipopoverpresentationcontroller


【解决方案1】:

将自己设置为弹出视图控制器呈现它之前的委托,并实现委托方法adaptivePresentationStyle(for:traitCollection:)以返回.none。这将导致弹出框在 iPhone 上停止适应为全屏呈现的视图控制器,并像在 iPad 上一样变成实际的弹出框。

这是一个完整的工作示例,显示响应按钮点击的弹出框:

class ViewController: UIViewController {
    @IBAction func doButton(_ sender: Any) {
        let vc = MyPopoverViewController()
        vc.preferredContentSize = CGSize(400,500)
        vc.modalPresentationStyle = .popover
        if let pres = vc.presentationController {
            pres.delegate = self
        }
        self.present(vc, animated: true)
        if let pop = vc.popoverPresentationController {
            pop.sourceView = (sender as! UIView)
            pop.sourceRect = (sender as! UIView).bounds
        }
    }
}
extension ViewController : UIPopoverPresentationControllerDelegate {
    func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
        return .none
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多