代码之家  ›  专栏  ›  技术社区  ›  Shankar Naik

如何在iPhone中使用Popover控制器

  •  4
  • Shankar Naik  · 技术社区  · 8 年前

    我不能在iPhone中将Popover控制器显示为Popover,但它在iPad上运行得很好。

    关于如何在iPhone中实现这一点的任何想法。

    据我所查,我找不到任何。

    不管怎样,让iphone上的弹出窗口和ipad上的弹出窗口一样出现是值得赞赏的!

    1 回复  |  直到 8 年前
        1
  •  9
  •   matt    8 年前

    将自己设置为Popover视图控制器的委托 之前 演示它,并实现委托方法 adaptivePresentationStyle(for:traitCollection:) 返回 .none . 这将导致Popover不再适应iPhone作为全屏显示的视图控制器,并像在iPad上一样变成实际的Popover。

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

    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
        }
    }