的NSTextField垂直对齐(NSTextField Vertical alignment)

2019-07-29 00:43发布

我创建在其中,我创建可可应用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];  

现在,我想我的文字的垂直对齐,并应根据文本长度可调。
任何人有什么建议? 请分享您的建议:)

非常感谢..!!

Answer 1:

你想要什么是可能的,但你必须做出NSTextFieldCell的子类,然后使用该子类在你的NSTextField。 你想覆盖的主要方法是drawingRectForBounds: selectWithFrame:editWithFrame:

这里是梦幻般的丹尼尔Jalkut博客文章关于这一点,他甚至还包括一个可下载的版本准备就绪。 该职位是相当老,但它应该仍然正常工作。



Answer 2:

对于调整的文本字段字符串大小,你必须计算与文本大小NSStringsizeWithFont: constrainedToSize: lineBreakMode:前后比设置框架调整文本字段的大小。

对于垂直对齐方式看待这个问题 (和答案)。



Answer 3:

覆盖ViewWillDraw和其父视图的在这一点上的中心位置你的NSTextField。 这适用于现场大小调整为好。 您也可以在此时调整字体大小,以找到符合该新大小的字体。



文章来源: NSTextField Vertical alignment