Button的类型
Button类型决定Button的行为:按下时Button如何突出显示以及Button是否显示其状态。按钮类型分为三类:
Push ButtonSticky Button单选按钮和复选框
你可以使用setButtonType:设置Button类型。
Push Button
这些Button不显示状态,因此对于触发操作最有用。鼠标按住Button时,它们会更改自己的外观;当鼠标释放Button时,它们会变回自己的原始外观。
要让NSButton控制按下
Button的外观,请使用NSMomentaryPushInButton(在Interface Builder的Button Inspector中称为“Momentary Push”)。当鼠标按下Button时,该Button显示为已被按下。
这是一个NSMomentaryPushInButton的示例,该Button的边框样式为NSRoundedBezelStyle,不分常规外观和嵌入式外观:
以下是带有NSThickerSquareBezelStyle边框样式的NSMomentaryPushInButton按钮的示例。边框样式NSRegularSquareBezelStyle和NSThickSquareBezelStyle相似。

要控制自己按下
Button的外观,请使用NSMomentaryChangeButton(在Interface Builder的Button Inspector中称为“Momentary Change”)。鼠标按下Button时,它将显示替代图像和替代标题。鼠标释放Button时,它将显示正常图像和标题。如果你尚未为Button设置替代图片或名称,则其外观不会改变。
Sticky Buttons
这些Button显示其状态,并在按下时显示停留。单击一个后,它显示保持按下的状态,直到再次单击它为止。
- 要让NSButton控制按下
Button的外观,请使用NSPushOnPushOffButton(在Interface Builder的Button Inspector中称为“Push On/Push Off”)。单击一次后,按钮显示已被按下。再次单击后,该Button显示回弹。弹回的外观用于关闭状态(NSOffState),按下的外观用于打开状态和混合状态(NSOnState和NSMixedState)。这对于显示App中某些内容的状态的Button(例如,显示所选文本是否为粗体的Button)很有用。 - 要控制按下
Button的外观,请使用NSToggleButton(在Interface Builder的Button Inspector中称为“Toggle”)。单击一次后,Button将显示其备用图像和标题。再次单击后,该Button将显示其正常图像和标题。如果没有备用图片或标题,则Button的外观不会改变。正常图像和标题用于关闭状态(NSOffState),备用图像和标题用于打开状态和混合状态(NSOnState和NSMixedState)。这对于在两个动作(例如,“停止”和“开始”)之间切换的Button很有用。
如果希望Button在所有三种状态下显示不同的外观,则必须子类化NSButton。
单选按钮和复选框
这些Button显示App中某些内容的状态。它们是NSToggleButton的专用版本,具有系统定义的图像。
要在两个选项之间进行选择,请使用NSSwitchButton,它看起来像一个复选框。这种类型的按钮在
Interface Builder中可以作为单独的调色板项使用。
要选择两个以上的选项,请使用NSRadioButton
Matrix。Matrix和单选按钮一起工作,以确保一次只打开一个按钮。这种类型的Button在Interface Builder中可以作为单独的调色板项使用。
更改用于这些Button的图像可能会导致不可预测的结果。如果要使开关或单选按钮具有自定义外观,请自定义Toggle Button或子类化NSButton。
只有复选框和单选按钮可以针对所有三种状态显示不同的图像,其他类型的Button则不能。
