我将 NSButtonCell 子类化以自定义绘图(可自定义主题)。我想自定义复选框和单选按钮的绘制方式。
有谁知道如何检测按钮是复选框还是单选按钮?
只有 -setButtonType:,没有 getter,而且 -showsStateBy 和 -highlightsBy 似乎都没有为复选框提供任何唯一的返回值,这些复选框也不适用于带有图像和备用图像的常规按钮。
到目前为止,我已经找到了两个(不是很漂亮)的解决方法,但它们可能会让应用程序被 MAS 拒绝:
使用 [self valueForKey: @"buttonType"]。这可行,但由于该方法不在标题中,我认为这是 Apple 不希望我做的事情。
覆盖 -setButtonType: 和 -initWithCoder: 以在手动或从 XIB 设置按钮类型时跟踪它。这里的问题是 XIB 案例,因为用于将按钮类型保存到磁盘的键没有记录。再说一次,我将使用私有 API。
我真的很希望这是 NSButtonCell 的直接替代品,而不是强制客户端代码对复选框使用单独的 ULIThemeSwitchButtonCell 类,对单选按钮使用第三个类。