设置.formSheet模态样式时preferredContentSize为何不生效?
问题解答
1. preferredContentSize 对.formSheet 样式是否有效?
有效。你引用的官方文档已经明确说明,在formSheet样式下可以通过preferredContentSize自定义内容尺寸,该属性并非仅支持.popover样式。
2. 你的代码错误点
你把preferredContentSize设置给了当前发起present的控制器(self),但系统只会读取被弹出的模态视图控制器的preferredContentSize来调整formSheet的尺寸,和presenting控制器无关。
修正后的代码:
let vc = CustomViewController() vc.modalPresentationStyle = .formSheet // 为要弹出的模态控制器设置尺寸,而非当前控制器 vc.preferredContentSize = CGSize(width: 50, height: 50) self.present(vc, animated: true)
额外注意事项
- 系统尺寸限制:formSheet的尺寸存在系统默认的最小阈值(比如iPad上formSheet的宽度不能过小),如果设置的尺寸低于这个阈值,系统会自动调整为最小允许尺寸。
- 尺寸类影响:仅在常规宽度+常规高度的尺寸类环境(如iPad横竖屏)下,formSheet才会遵循
preferredContentSize;在紧凑宽度环境(如iPhone),formSheet默认全屏显示,此时preferredContentSize不会生效。
内容的提问来源于stack exchange,提问作者Neal.Marlin
相关产品推荐
相关产品推荐

