关于‘关于本机’窗口及截图右侧NSButton的类型与实现问询
嘿,让我来帮你理清这两个关于NSButton的问题:
1. “关于本机”窗口中的NSButton类型
“关于本机”里的按钮(比如「系统报告」这类)本质就是NSButton,它采用的是无边框样式(NSButtonStyleBorderless)。在Big Sur及之后的macOS版本中,苹果更倾向于用NSButtonConfiguration来配置这类按钮的外观:
- 去掉了传统的按钮边框,只保留文本显示
- 鼠标悬停时会触发轻微的背景高亮或者文本下划线,提供交互反馈
- 点击时会有短暂的视觉动效提示
你可以用Swift快速创建一个同款按钮:
let aboutButton = NSButton() var config = NSButtonConfiguration.borderless() config.title = "系统报告" config.hoverStyle = .highlight // 悬停时高亮背景 aboutButton.configuration = config
2. 截图右侧6个类似内联的按钮
首先明确:这类按钮不是标准的内联按钮(NSButtonStyleInline),它们本质还是独立的NSButton,只是通过统一的样式配置+水平布局,实现了类似内联的视觉效果,属于标准控件的自定义用法,完全是系统原生支持的。
实现步骤(Swift示例):
- 统一样式配置:给每个按钮应用相同的配置,确保外观一致:
func createInlineStyleButton(title: String) -> NSButton { let button = NSButton() var config = NSButtonConfiguration.borderless() config.title = title config.baseForegroundColor = .controlAccentColor // 使用系统强调色 config.hoverStyle = .underline // 悬停时显示下划线 config.buttonSize = .small // 适配紧凑布局 button.configuration = config return button }
- 水平布局排列:用
NSStackView把6个按钮横向串起来,设置合适的间距和对齐方式,模拟内联效果:
let buttonStack = NSStackView() buttonStack.orientation = .horizontal buttonStack.spacing = 20 // 按钮之间的间距 buttonStack.alignment = .centerY // 批量添加按钮 let buttonTitles = ["选项1", "选项2", "选项3", "选项4", "选项5", "选项6"] buttonTitles.forEach { title in buttonStack.addArrangedSubview(createInlineStyleButton(title: title)) }
如果你的截图里的按钮带有轻微凹陷边框,那也可以把配置改成NSButtonConfiguration.recessed(),核心逻辑还是基于NSButton的自定义配置+水平布局组合。
内容的提问来源于stack exchange,提问作者M.S.
相关产品推荐
相关产品推荐

