自定义NSButton绘图混乱文本渲染

时间:2016-11-07 12:29:48

标签: macos cocoa custom-controls nsbutton nsbuttoncell

我是NSButton / NSButtonCell的子类,一切正常,但至少在Retina绘图中,只要我在NSButton或NSButtonCell中实现任何绘图函数,无论我是否做一些自定义,文本呈现都会发生变化文本绘图或直接委托超级实现。

button drawing

正如您所看到的那样,只需更改抗锯齿功能,文本就会变得更薄。

当我在Xcode的Reveal-rip off中检查这个时,我看到当没有覆盖任何绘图方法时,文本嵌入在NSButtonTextField中。只要覆盖了任何绘图方法,NSButtonTextField就会消失。

当我在按钮文本后插入背景图层并设置

时,不会发生这种情况
button.isBorderd = false

但我不太喜欢那种解决方案。

有没有办法得到相同的"胖"文字渲染没有搞乱图层?也许是一个属性字符串属性,一个特殊的文本绘图命令,什么?

任何帮助将不胜感激/

2 个答案:

答案 0 :(得分:0)

我无法使用背景图层重现你的工作,尽管我可能做错了。

我最终将NSTextField作为子视图添加到按钮,具有以下属性:

ArrayOutOfBoundsException

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

答案 1 :(得分:0)

我有同样的问题,不仅在文本中,而且在整个窗口中。我解决了它在应用Info.plist中添加一个新行

高分辨率能力布尔值是

Show this Apple Tutorial

在:
Before Image

在: After Image