【问题标题】:Positioning NSTextField correctly with setFrame:使用 setFrame 正确定位 NSTextField:
【发布时间】:2012-06-29 10:52:30
【问题描述】:

我在将我的 NSTextFields 定位在我的视图中时遇到问题,所以我希望你们能帮助我。我有这个带有[theView setFrame:NSMakeRect(10, 10, 64, 64)]; 的 NSView *theView,它将视图准确地定位在我想要的位置。

但现在我尝试将 NSTextField 作为 subView 添加到 theView 中,但有些不对劲。现在上面的图片应该是这样的

这是我的代码及其外观:

primaryDigit = [[NSTextField alloc] init];
[primaryDigit setFrame:NSMakeRect(4, 6, 60, 58)];
[primaryDigit setFont:[NSFont fontWithName:@"Helvetica Neue" size:55]];
[primaryDigit setBezeled:NO];
[primaryDigit setEditable:NO];
[primaryDigit setSelectable:NO];
[primaryDigit setDrawsBackground:NO];
[primaryDigit setTextColor:[NSColor whiteColor]];
[primaryDigit setStringValue:@"2"];
[self addSubview:primaryDigit];

当我做[primaryDigit setFrame:NSMakeRect(0, 0, 64, 64)]; 时,数字不会出现在左下角,但它会这样做:

关于定位这些视图是否有一些我不理解的基本内容?我是个菜鸟,但我仍然认为我理解这一点。 (顺便说一句,这些图像中的字体不同,但我认为这不会造成问题?)

更新:按照“dasdom”的要求,这里是带有背景颜色的文本字段

【问题讨论】:

  • NSTextField 是一个容器。尝试通过设置文本视图的背景颜色来对此进行调查。
  • 这个[self addSubview:primaryDigit]; 属于theView 类,对吧?
  • @dasdom 我在上面添加了一张图片。彩色区域似乎正确,但为什么不是文字?
  • @Alexander yes 'self' is the View

标签: objective-c xcode nsview nstextfield


【解决方案1】:

好的,我发现了问题所在。

NSTextFields 中的文本需要围绕它们的“空间”。因此,当它们有文本时,它们不会出现在视图的左下角,而是距离它有点远。

这也意味着如果 NSTextFields 没有足够大的框架,那么文本可能会被截断。

这里有一个例子:

“2”上方的所有红色空间都必须在那里,否则数字将移出框架并在底部被切断。

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 2012-04-27
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多