ios - 具有演示样式 formSheet 的模态 UIViewController 在 iPhone XS Max 和 iPhone XR 上无法正确显示
问题描述
我有一个从 segue 模态呈现的视图控制器。其演示样式设置为表单。
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .formSheet
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
segue.destination.presentationController?.delegate = self
}
在 iPhone X 和 iPhone 8 Plus 上,它按预期工作,在 iPhone Xs Max 和 Xr 上,控制器的宽度得到尊重,但高度却被拉长了。我无法确认这是模拟器错误、iOS 错误还是预期行为,因为我自己没有 Xs Max。
解决方案
更好地使用模式表示样式 overFullScreen 用于紧凑的水平尺寸类别,而将 formSheet 留给水平规则的类别。
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
if controller.traitCollection.horizontalSizeClass == .regular {
return .formSheet
}
return .overFullScreen
}
推荐阅读
- excel - 如何增加 Datatable vb.net 中的行大小
- mysql - 使用 where 条件显示表格
- java - Android - 仅在 oppo 设备中获取 InflateException
- python - 为什么while循环比for循环花费更长的时间?
- javascript - 如何在传单地图上显示热图
- android - PrintManager.print() 并更改了 attachBaseContext 中的语言环境
- java - 尝试检索从 Google 登录下载的位图时出现 Skia 错误
- ios - 为什么 UITableViewCell 的 cellForRowAt 方法没有调用?
- javascript - NodeJs 基于 CSV 输入创建动态 mySql 表
- hyperledger-fabric - Hyperledger Fabric 中的背书策略