gpt4 book ai didi

macos - 自定义 NSButton 绘图会扰乱文本渲染

转载 作者:行者123 更新时间:2023-12-03 16:15:33 29 4
gpt4 key购买 nike

我正在子类化 NSButton/NSButtonCell 并且一切正常,但至少在 Retina 绘图中,只要我在 NSButton 或 NSButtonCell 中实现任何绘图功能,无论我是否进行一些自定义文本绘图,文本渲染都会发生变化或者直接委托(delegate)给 super 实现。

button drawing

正如您所看到的,仅改变抗锯齿效果,文本就变得更细。

当我在 Xcode 的 Reveal-rip off 中检查这一点时,我发现当没有覆盖任何绘图方法时,文本被嵌入到 NSButtonTextField 中。一旦任何绘图方法被重写,NSButtonTextField 就会消失。

当我在按钮文本后面插入背景层并设置时,这一切都不会发生

button.isBorderd = false

但我不太喜欢这个解决方案。

有没有什么方法可以在不弄乱图层的情况下获得相同的“胖”文本渲染?也许是一个属性字符串属性,一个特殊的文本绘制命令,什么?

如有任何帮助,我们将不胜感激/

最佳答案

我无法使用背景层重现您的解决方法,尽管我可能做错了。

我最终添加了一个 NSTextField 作为按钮的 subview ,具有以下属性:

_titleTextField = [[NSTextField alloc] initWithFrame:NSZeroRect];
[_titleTextField setBordered:NO];
[_titleTextField setDrawsBackground:NO];
[_titleTextField setFont:[NSFont systemFontOfSize:13]];
[_titleTextField setTextColor:[FantasticalColors color:@"dimLabelTextColor"]];
[_titleTextField setStringValue:[self title]];
[_titleTextField setEditable:NO];
[_titleTextField setFocusRingType:NSFocusRingTypeNone];
[self addSubview:_titleTextField];

然后我就能够渲染单元格的drawRect中的所有非文本,然后让文本字段渲染文本。也不理想,但这是我能够匹配字体渲染的唯一方法。

关于macos - 自定义 NSButton 绘图会扰乱文本渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465248/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com