【问题标题】:How to modify look and feel of NSButton to create toggle effect如何修改 NSButton 的外观以创建切换效果
【发布时间】:2017-07-25 06:47:13
【问题描述】:

如何修改 NSButton 的外观和感觉,我想创建一个类似于 NSRoundRectBezelStyle 但具有图像和自定义高度的切换按钮

我如何改变背景颜色、悬停颜色改变、点击改变颜色、在状态为 ON 或 OFF 时创建切换效果、创建类似于 NSRoundRectBezelStyle 的边框。现有的本机按钮没有与我的 UI 元素完全相同的 UI。

UI 应该如下所示,但我还想在文本上方添加图像。

This Mac按钮 - 悬停效果

桌面按钮 - 开启效果

共享按钮 - 关闭效果

【问题讨论】:

  • 如果原生的NSButton不能做你想做的事,你必须创建NSButton和/或NSButtonCell的子类。阅读Button Programming Topics。你想要一个图标复选框吗?
  • 是的,但是文档没有足够的实现解释。请提供一些链接,其中包含有关实施的一些详细信息。而且我不想要复选框,我想要切换按钮,按下按钮类型。
  • 来自Using Checkboxes: "图标复选框 您还可以拥有一个图标按钮复选框;也就是说,主要由其图标标识且文本很少或没有文本的复选框.如果按钮关闭,则显示为伸出。按钮打开,则显示为按下。(图标按钮无法显示混合状态。)
  • 您可以在 Interface Builder 中或以编程方式创建图标复选框。如果您使用 Interface Builder,请从按钮开始。如果您以编程方式创建它,请创建一个 NSButton 实例。然后通过将其类型设置为 NSPushOnPushOffButton,将其图像位置设置为 NSImageOnly,将其边框类型设置为方形边框类型来更改它。然后将图像设置为您想要的。”。试一试。
  • 悬停:NSButton: show alternate image on hover。代替替代图像,绘制替代背景。

标签: macos cocoa nsbutton


【解决方案1】:

我认为就是这样:

let button = NSButton(title: "Title", target: self, action: #selector(doSomething(_:)))
button.setButtonType(.pushOnPushOff)
button.bezelStyle = NSButton.BezelStyle.recessed
// the magic line
button.showsBorderOnlyWhileMouseInside = true

【讨论】:

  • 由于button.bezelStyle = NSButton.BezelStyle.recessed,高度是固定的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多