将自己设置为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
}
}