我正在尝试使用NSTextField以编程方式创建标签,但它模糊不清:screenshot
到目前为止,这是我的代码:
NSTextfield *textfield = [[NSTextField alloc] initWithFrame:NSMakeRect(5,5,150,20)];
[texField setStringValue:@"some text here"];
[textField setEditable:NO];
[textField setSelectable:NO];
[textField setBordered:NO]
[textField setDrawsBackground:NO]
我已将问题追溯到setDrawsBackground行。我也尝试过使用[textField setBackgroundColor:[NSColor clearColor],但没有运气。
顺便说一下,我将textField添加到视图的子视图中,该视图是scrollview的子视图。我也在所有视图级别玩isOpaque,但再没有运气。
非常感谢任何帮助。
答案 0 :(得分:7)
如果您没有背景(包括清除),并且您的文本是任何支持图层的超级视图的子视图(您已在代码或IB中打开“想要图层”以允许动画/过渡),您将获得模糊的文字。您必须选择没有图层支持的视图或具有纯色背景的标签。
答案 1 :(得分:3)
我遇到了同样的问题,但我已经解决了这个问题:
textfield.canDrawSubviewsIntoLayer = true
答案 2 :(得分:1)
确保您将NSTextField
的框架设置为所有整数值的内容。
如有必要,请使用roundf()
。
我得到了一个模糊的NSTextField
,既没有添加可靠的背景也没有从我的视图层次结构中删除Core Animation图层。我注意到我将此文本字段的框架设置为Y值为4.5的内容,因此以下更改为我解决了问题:
模糊标签:
_label.frame = NSOffsetRect(_labelFrame,
-0.5 * (someRect.size.width + someConstant),
0.0);
没有模糊:
_label.frame = NSOffsetRect(_labelFrame,
roundf(-0.5 * (someRect.size.width + someConstant)),
0.0);
(在上面的示例中,_labelFrame
和someRect
为NSRect
,someConstant
为CGFloat
。如您所见,计算I正在第一个例子的第二行做的是将一个非整数值传递给NSOffsetRect
)。
答案 3 :(得分:0)
由于这是我第一次继承NSView,我将上面的代码放在 drawRect 方法而不是 initWithFrame 方法中。我这样做是因为我正在关注Apple的Dev网站上的一个示例应用程序。
当我滚动时,这也导致我的CPU使用量激增
答案 4 :(得分:0)
如果你是通过XIB创建它并且模糊不清,我找到了修复:
[textField setStringValue:@""];
如果我发表评论,它会变得模糊;如果放回去就很清楚。
答案 5 :(得分:0)
尝试以下操作:
textField.drawsBackground = true
textField.backgroundColor = NSColor.white.withAlphaComponent(.leastNormalMagnitude)
答案 6 :(得分:0)
开箱即用,但值得一提。我整天都在浪费时间调试问题。我使用的是非Apple外部显示器,因此可以确定问题所在。一旦我在Mac book pro中打开该应用程序,它就很好了。 因此,我使用的三星显示器可能不是视网膜显示器。
答案 7 :(得分:0)
简单地添加
SELECT
if((obsolete = 'N' OR instock = 'Y'), 1, 0) AS saleable, *
FROM
product;
InterfaceBuilder的属性