如何在 iPhone 中使用弹出框控制器
how to use popover controller in iPhone
我无法在 iPhone 中将弹出框控制器显示为弹出框,而它在 iPad 中工作得很好。
在 iPhone.
中关于如何做到这一点的任何想法
据我搜索,我找不到。
无论如何要让弹出窗口出现在 iphone 中,就像它在 iPad 中一样,非常感谢!
在呈现之前将自己设置为弹出视图控制器的委托,并实现委托方法adaptivePresentationStyle(for:traitCollection:)
到return.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
}
}
我无法在 iPhone 中将弹出框控制器显示为弹出框,而它在 iPad 中工作得很好。
在 iPhone.
中关于如何做到这一点的任何想法据我搜索,我找不到。
无论如何要让弹出窗口出现在 iphone 中,就像它在 iPad 中一样,非常感谢!
在呈现之前将自己设置为弹出视图控制器的委托,并实现委托方法adaptivePresentationStyle(for:traitCollection:)
到return.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
}
}