我创建了一个带有按钮的Cocoa应用程序,其样式为“检查”和“切换”。它设置为自定义类MyButton
:
@interface MyButton : NSButton
- (void)awakeFromNib;
@end
此自定义类设置attributedTitle
:
@implementation MyButton
- (void)awakeFromNib {
[super awakeFromNib];
[self setAttributedTitle:[[NSAttributedString alloc] initWithString:@"Hallo" attributes:@{
}]];
}
@end
选中该按钮后,鼠标向下移动时字体颜色就会改变。
我读了NSAttributedString
's default color is black,但是当我将其显式设置为黑色时,鼠标按下时它将保持黑色。如果我明确要求[NSColor controlTextColor]
,则将鼠标向下滑动颜色。此行为记录在某处吗?是故意的还是错误的?
答案 0 :(得分:1)
在您的情况下,您可能希望继承NSButtonCell并重写某些方法。
一种可能的途径是重写NSCell的方法
- (NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
这是许多令人沮丧的按钮绘制问题之一。在尝试将NSButtonCell的绘制弯曲到我的需要之后,我最终自己绘制了所有内容。 我从古老但很棒的BGHUDAppKit开始,并对其进行了大量修改以满足我的需求。 BGHUDAppKit非常可怕,但是至少现在我可以轻松调试或解决大多数绘图错误。我对所有尝试支持Mojave暗模式的人都会遇到与此类似的错误。