【发布时间】:2012-12-16 17:54:02
【问题描述】:
我正在编写一个 OS X 应用程序,但在单独的窗口中字体平滑有问题。
我有一个文本字段,您可以在其中放置文本和建议窗口,该窗口会根据您所写的内容弹出一个建议列表。我正在使用基于 View-cell 的NSTableView 来显示这些建议,并使用SFBPopoverWindowController 将其显示为“弹出”窗口(尝试了具有相同效果的其他类)。当第一次绘制行时,它们看起来很好,但是在我选择它们(键盘或鼠标)之后,字体会改变它的重量。它只是视觉上的 - 就像您要更改字体的平滑方法一样,而不是粗体设置。
“音符”是这里选择的单元格
更奇怪的是,在我隐藏和显示窗口 3 次之后,从那时起一切正常。
再次 - “音符”是选定的单元格。
选择是通过覆盖NSTableRowView 类及其drawSelectionInRect: 方法完成的,但我尝试在自定义NSTableCellView 类中绘制所有内容,但没有帮助。文本是标准的NSTextField - 那里没有任何改变。
SFBPopoverWindow(和它的控制器)被创建一次,并与 styleMask NSBorderlessWindowMask 一起重复使用,支持 NSBackingStoreBuffered,defer 设置为 YES。我对SFBPopoverWindowController 所做的唯一更改是关闭窗口成为关键窗口,但它并没有改变任何东西。
【问题讨论】:
-
我自己也看到了这个问题,它有一个自定义视图,它会显示很多文本。用突出显示(不同的背景颜色)重绘文本的某些部分后,文本会出现“锯齿状”。我没有找到答案,但在我转换为使用 CALayers 后它就消失了。我知道这没有帮助,但我觉得这是 10.7 和 10.8 中的一个错误。
标签: cocoa nstableview nswindow nstableviewcell