我正在创建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];
现在我希望我的文字垂直对齐,并且应该根据文字长度进行调整 有人有什么建议吗?请分享你的建议:)
非常感谢.. !!
答案 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定位在其父视图的中心。这也适用于实时调整大小。此时您还可以调整字体大小以查找适合新大小的字体。