NSTextField垂直对齐

时间:2012-04-18 07:46:20

标签: xcode cocoa xcode4.2 vertical-alignment nstextfield

我正在创建cocoa app,其中我以编程方式创建NSTextField

NSView *superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 300, 1400, 500)];
NSTextField *myTextField = [[NSTextField alloc] initWithFrame:NSMakeRect(180, 100, 1000, 300)];
[myTextField setStringValue:myText];
[myTextField setEditable:NO];
[myTextField setBezeled:NO];
[myTextField setDrawsBackground:NO];
[myTextField setSelectable:NO];
[myTextField setFont:[NSFont fontWithName:@"Futura" size:22]];
[superView addSubview:myTextField];
[superView setAutoresizesSubviews:YES];
[myTextField setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[self.window.contentView addSubview:superView];  

现在我希望我的文字垂直对齐,并且应该根据文字长度进行调整 有人有什么建议吗?请分享你的建议:)

非常感谢.. !!

3 个答案:

答案 0 :(得分:11)

你想要什么,但你必须创建NSTextFieldCell的子类,然后在你的NSTextField中使用该子类。您要覆盖的关键方法是drawingRectForBounds:selectWithFrame:editWithFrame:

Here is a blog post from the fantastic Daniel Jalkut关于这一点,他甚至包括一个可下载的版本。该帖子相当陈旧,但它应该仍能正常工作。

答案 1 :(得分:1)

要将文字字段调整为字符串大小,您必须先使用NSString的{​​{1}}计算文字大小,然后通过设置框架调整文本字段的大小。

对于垂直对齐,请查看此question(以及答案)。

答案 2 :(得分:-1)

覆盖ViewWillDraw并在此时将NSTextField定位在其父视图的中心。这也适用于实时调整大小。此时您还可以调整字体大小以查找适合新大小的字体。