ios - 如何在 iPhone 中使用弹出框控制器
问题描述
我无法在 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
}
}
推荐阅读
- jsf - 如何修复“UT010050:过滤器映射 SERVLET 中使用的过滤器 Richfaces - 未找到 Faces Servlet”
- c++ - 与碰撞检测作斗争。如何正确检测碰撞?
- c# - TPL和TAP之间的区别
- corda - Corda:我如何/在哪里可以尝试配置数据库连接重试
- python - 加载的模型的特征数量不正确
- java - 如何设置 Safari 下载位置 - Selenium WebDriver
- javascript - 如何在玩笑中访问局部变量
- google-sheets - 使用 Countifs 计算一个范围内的值的数量,获取 COUNTIFS 的数组参数的大小不同
- nginx - 如何在 nginx 中的主机后添加 url 前缀?
- python - 为目录中的所有测试添加设置步骤,而不在每个套件中添加