使用代码(不是界面生成器)我需要创建一个NSButton
看起来像图像的东西。具体来说,我想使用NSImageNameStopProgressFreestandingTemplate
它,我不需要它看起来像按钮,而是看起来像图像。这意味着:
1. 没有“按下按钮”的外观
2. 没有边框,按钮没有任何可见性
谢谢。
使用代码(不是界面生成器)我需要创建一个NSButton
看起来像图像的东西。具体来说,我想使用NSImageNameStopProgressFreestandingTemplate
它,我不需要它看起来像按钮,而是看起来像图像。这意味着:
1. 没有“按下按钮”的外观
2. 没有边框,按钮没有任何可见性
谢谢。
我知道这个回复有点晚了,但你可以试试这个,因为thisButton
:
[thisButton setImage:[NSImage imageNamed:NSImageNameStopProgressFreestandingTemplate]];
[thisButton setImagePosition:NSImageOnly];
[thisButton setBordered:NO];
最后一行是关键位:移除按钮边框有效地将其从边框剥离,只留下可点击的图像。(顺便说一句,我没有专门尝试过上面的代码,所以您可能需要进行一些其他调整,例如设置imageScaling
or buttonType
,以使其发挥最佳效果。)
最后一点:如果您使用的是模板图像(正如您所说的那样),Cocoa 会自动以轻微的深灰色渐变显示它;单击按钮时,它会暂时变暗为纯黑色。这是您不想要的自动“按钮向下”外观;然而,它非常微妙,并且是按钮工作的一个很好的指标。如果您不希望这种情况发生,您可以获取所需图像的实例并[stopImage setTemplate:NO];
在其上。
禁用isBordered
let button = NSButton(
image: NSImage(named: NSImage.Name("plus"))!,
target: self,
action: #selector(onButtonPress)
)
button.isBordered = false
如果您不想使用模板但无论如何都希望下推突出显示,您还可以使用以下设置NSButton
:
let imageButton = NSButton()
imageButton.image = NSImage(named: "MyImage")!
imageButton.bezelStyle = .shadowlessSquare
imageButton.isBordered = false
imageButton.imagePosition = .imageOnly
使高光在任何图像上起作用的重要事情是设置bezelStyle
为shadowlessSquare
.
我知道问题中没有要求这种行为,但它可能对其他人有用。