我无法在 iPhone 中将 popover 控制器显示为 popover,而它与 iPad 配合得很好。
关于如何在 iPhone 中做到这一点的任何想法。
据我搜索,我找不到任何东西。
无论如何,让弹出框出现在 iphone 中,就像它在 iPad 中一样,值得赞赏!
我无法在 iPhone 中将 popover 控制器显示为 popover,而它与 iPad 配合得很好。
关于如何在 iPhone 中做到这一点的任何想法。
据我搜索,我找不到任何东西。
无论如何,让弹出框出现在 iphone 中,就像它在 iPad 中一样,值得赞赏!
在呈现之前将自己设置为弹出视图控制器的委托,并实现委托方法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
}
}