【问题标题】:Weird font behavior on the NSTextFieldNSTextField 上奇怪的字体行为
【发布时间】:2012-01-03 13:45:58
【问题描述】:

我以编程方式将 NSTextField 添加到我的 NSView:

NSTextField *projectLabel = [[NSTextField alloc] initWithFrame:frame];
[projectLabel setStringValue:@"projectName"];
[projectLabel setBezeled:NO];
[projectLabel setDrawsBackground:NO];
[projectLabel setEditable:NO];
[projectLabel setSelectable:NO];

[projectLabel setFont:[NSFont controlContentFontOfSize:13]];
projectLabel.autoresizingMask = NSViewMaxXMargin | NSViewMinYMargin; 

[self addSubview:projectLabel];
[self setAutoresizesSubviews:NO];

此字段已正确添加,但是当我更改视图大小(甚至将窗口移动到第二个显示器)时,字段上的字体变化非常奇怪(见附图)。

开始时
更改大小后
我不知道我做错了什么

【问题讨论】:

  • 并不是说这会有所帮助,但是您应该将大小传递 0.0 以获得默认大小的控件内容字体。
  • 更相关的是:字体根本没有改变。文本字段是对文本的双重打击:多次绘制文本,每次都在之前的文本之上。
  • 你说的很对,我每次都在drawRect上画这个标签,当大小改变的时候。

标签: macos cocoa nsview nstextfield


【解决方案1】:

我每次在drawRect上画这个标签,当大小改变时。

那么,您是在手动告诉该字段在其父视图的drawRect: 中显示?

不要那样做。这是一个子视图,所以无论如何它都会被告知要轮流绘制。就让它发生吧。

【讨论】:

  • 理论上我知道这一点。但有时我会犯愚蠢的错误 :) 感谢您的建议。
  • @TomaszWojtkowiak 我也面临同样的问题可以分享我如何解决这个问题?
  • @SawanCool - 解决方案在 Peter Hosey 的回答中。我刚刚将 NSTextField 的创建从 drawRect 中移出:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 2021-07-02
  • 1970-01-01
  • 2014-06-21
  • 2020-09-09
  • 2013-02-05
相关资源
最近更新 更多