You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:24:55