Button的类型

Button类型决定Button的行为:按下时Button如何突出显示以及Button是否显示其状态。按钮类型分为三类:

  • Push Button
  • Sticky Button
  • 单选按钮复选框

你可以使用setButtonType:设置Button类型。

Push Button

这些Button不显示状态,因此对于触发操作最有用。鼠标按住Button时,它们会更改自己的外观;当鼠标释放Button时,它们会变回自己的原始外观。

  • 要让NSButton控制按下Button的外观,请使用NSMomentaryPushInButton(在Interface BuilderButton Inspector中称为“Momentary Push”)。当鼠标按下Button时,该Button显示为已被按下。
    这是一个NSMomentaryPushInButton的示例,该Button的边框样式为NSRoundedBezelStyle,不分常规外观和嵌入式外观: Button的类型 - 图1 以下是带有NSThickerSquareBezelStyle边框样式的NSMomentaryPushInButton按钮的示例。边框样式NSRegularSquareBezelStyleNSThickSquareBezelStyle相似。 Button的类型 - 图2

  • 要控制自己按下Button的外观,请使用NSMomentaryChangeButton(在Interface BuilderButton Inspector中称为“Momentary Change”)。鼠标按下Button时,它将显示替代图像和替代标题。鼠标释放Button时,它将显示正常图像和标题。如果你尚未为Button设置替代图片或名称,则其外观不会改变。

Sticky Buttons

这些Button显示其状态,并在按下时显示停留。单击一个后,它显示保持按下的状态,直到再次单击它为止。

  • 要让NSButton控制按下Button的外观,请使用NSPushOnPushOffButton(在Interface BuilderButton Inspector中称为“Push On/Push Off”)。单击一次后,按钮显示已被按下。再次单击后,该Button显示回弹。弹回的外观用于关闭状态(NSOffState),按下的外观用于打开状态和混合状态(NSOnStateNSMixedState)。这对于显示App中某些内容的状态的Button(例如,显示所选文本是否为粗体的Button)很有用。
  • 要控制按下Button的外观,请使用NSToggleButton(在Interface BuilderButton Inspector中称为“Toggle”)。单击一次后,Button将显示其备用图像和标题。再次单击后,该Button将显示其正常图像和标题。如果没有备用图片或标题,则Button的外观不会改变。正常图像和标题用于关闭状态(NSOffState),备用图像和标题用于打开状态和混合状态(NSOnStateNSMixedState)。这对于在两个动作(例如,“停止”和“开始”)之间切换的Button很有用。

如果希望Button在所有三种状态下显示不同的外观,则必须子类化NSButton

单选按钮复选框

这些Button显示App中某些内容的状态。它们是NSToggleButton的专用版本,具有系统定义的图像。

  • 要在两个选项之间进行选择,请使用NSSwitchButton,它看起来像一个复选框。这种类型的按钮在Interface Builder中可以作为单独的调色板项使用。 Button的类型 - 图3

  • 要选择两个以上的选项,请使用NSRadioButtonMatrixMatrix单选按钮一起工作,以确保一次只打开一个按钮。这种类型的ButtonInterface Builder中可以作为单独的调色板项使用。 Button的类型 - 图4

更改用于这些Button的图像可能会导致不可预测的结果。如果要使开关单选按钮具有自定义外观,请自定义Toggle Button或子类化NSButton

只有复选框单选按钮可以针对所有三种状态显示不同的图像,其他类型的Button则不能。