Подтвердить что ты не робот

NSTextField Вертикальное выравнивание

Я создаю приложение cocoa, в котором я создал 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];  

Теперь я хочу вертикальное выравнивание текста, и оно должно быть настроено в соответствии с длиной текста.
У кого-нибудь есть предложения? Пожалуйста, поделитесь своим предложением:)

Большое спасибо..!!

4b9b3361

Ответ 1

То, что вы хотите, возможно, но вам нужно сделать подкласс NSTextFieldCell, а затем использовать этот подкласс в вашем NSTextField. Ключевыми методами, которые вы хотите переопределить, являются drawingRectForBounds:, selectWithFrame: и editWithFrame:

Вот сообщение в блоге от сказочного Даниэля Ялкута об этом, он даже включает загружаемую версию, готовую к работе. Сообщение довольно старое, но оно все равно должно работать нормально.

Ответ 2

Чтобы настроить текстовое поле на размер строки, вам необходимо рассчитать размер текста с помощью NSString sizeWithFont: constrainedToSize: lineBreakMode: до и после этого изменить размер текстового поля с настройкой фрейма.

Для вертикального выравнивания посмотрите question (и ответы).

Ответ 3

переопределить ViewWillDraw и поместить ваш NSTextField в центр его родительского представления в этот момент. Это также работает с живым изменением размера. Вы также можете настроить размер шрифта в этот момент, чтобы найти шрифт, который соответствует новому размеру.