controlSize 是 SwiftUI 中用于控制系统控件尺寸等级的视图修饰符,主要影响按钮、开关、文本框、选择器、进度条等“系统控件”的整体视觉尺寸与内边距,而不是字体大小本身。
基本定义
类型定义:
func controlSize(_ size: ControlSize) -> some View
ControlSize 是一个枚举:
enum ControlSize {
case mini
case small
case regular
case large
case extraLarge // macOS 13+
}
不同平台支持略有差异:
macOS:全部支持(最完整)。
iOS:通常只明显区分 small / regular / large。
watchOS / tvOS:部分支持。
使用场景
controlSize可以影响系统控件尺寸。
例如:
1、按钮的高度和内边距。
2、TextField / SecureField 的高度。
3、Toggle / Picker 的尺寸。
Button("Clean") { }
.controlSize(.small)

但是不会影响自定义绘制的视图和改变frame。
与font区别
1、.controlSize():控件整体尺寸体系(高度 + padding + 系统布局)。
2、.font():文本字号。
3、.frame():强制布局尺寸。
总结
controlSize可以控制表格行内按钮、状态栏工具等场景。
在macOS上,controlSize实际映射的是AppKit的NSControl.controlSize。
