使用setFrame正确定位NSTextField:

时间:2012-06-29 10:52:30

标签: objective-c xcode nsview nstextfield

NSView http://f.cl.ly/items/120B2W082x1t1J012114/Screen%20Shot%202012-06-29%20at%2012.31.26.png

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

但是现在我正在尝试将NSTextField作为子视图添加到View中,但有些事情是不对的。现在上面的图像应该是

这是我的代码及其外观:

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];

wrong http://f.cl.ly/items/1C3A34241K3s3l2B2U3M/Screen%20Shot%202012-06-29%20at%2012.45.38.png

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

strange http://f.cl.ly/items/2Y0X2F0H071M222b2W3P/Screen%20Shot%202012-06-29%20at%2012.49.51.png

对于定位这些观点,我有什么基本的理解吗?我很喜欢诺贝,但我仍然认为我理解这一点。 (顺便说一下,这些图片中的字体不同但我觉得这不会引起问题?)

更新:正如'dasdom'问我,这是带有背景颜色的文本字段 backgroundcolor http://f.cl.ly/items/463c161r0T3A1D3h0G3G/Screen%20Shot%202012-06-29%20at%2013.45.28.png

1 个答案:

答案 0 :(得分:1)

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

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

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

此处的示例:two http://f.cl.ly/items/363r28013j2k463J271l/Screen%20Shot%202012-06-29%20at%2016.18.35.png

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