在我的新MacOS应用程序中,我使用带有图像的NSButton。每当我按住按钮时,当前图像将变暗/突出显示,直到再次释放按钮。我不希望这种行为,但真的不知道如何禁用它。当前按钮设置:
The main answer on this old post介绍了一种通过将按钮类型更改为15 15
来实现此目的的方法,但这似乎不再起作用。
如果可能的话,我想在情节提要板中禁用它,但是,如果那不可能,我可以使用代码。
答案 0 :(得分:0)
在与NSButton纠缠了几个小时之后,我终于弄清楚了如何控制其按下状态。 NSButton本身不提供任何控制它的方法,但是底层的NSButtonCell提供了控制它的方法。要将图像设置为按下状态:
(self.myButton.cell! as! NSButtonCell).alternateImage = NSImage(named: "myImage")
您还可以使用highlightsBy
(突出显示表示按下)和showsStateBy
(状态通常与选中状态一起使用)来定义按钮显示其不同状态的方式。按钮,其中有 on 和 off 状态标志)。除了所有预定义状态NSContentsCellMask
,NSPushInCellMask
外,
NSChangeGrayCellMask
和NSChangeBackgroundCellMask
也可以将它们设置为0以禁用其他图形。
我发现这个old Github post对其进行了更详细的解释。
因此要在按下/突出显示时禁用其他外观:
(self.timerButton.cell! as! NSButtonCell).highlightsBy = NSCell.StyleMask(rawValue: 0)
我还找到了一种禁用突出显示状态本身的方法,当您有许多按钮时,这可能很有用。您可以在自定义NSButton类或常规扩展中覆盖draw(_ dirtyRect: NSRect)
函数,以将-highlighted
标志保持为false:
extension NSButton {
override open func draw(_ dirtyRect: NSRect) {
self.highlight(false)
super.draw(dirtyRect)
}
}