我创建了一个带有按钮的 Cocoa 应用程序,具有“Check”样式和“Switch”类型。它被设置为自定义类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]
,则颜色会在鼠标按下时切换。这种行为是否记录在某处?这是故意的还是错误?
最佳答案
就您而言,您可能希望子类化 NSButtonCell 并重写一些方法。
一种可能的途径是重写 NSCell 的方法
- (NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
这是许多令人沮丧的按钮绘制问题之一。在尝试根据我的需要调整 NSButtonCell 绘图后,我最终自己绘制了所有内容。 我从古老但很棒的 BGHUDAppKit 开始,并对它进行了大量修改以满足我的需求。 BGHUDAppKit 是巨大的,但至少现在我可以轻松调试或解决大多数绘图错误。我对所有在尝试支持 Mojave 黑暗模式时遇到类似错误的人表示同情。
关于macos - NSButton attributeTitle 在按钮按下时改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52832446/