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];
Теперь я хочу вертикальное выравнивание текста, и оно должно быть настроено в соответствии с длиной текста.
У кого-нибудь есть предложения? Пожалуйста, поделитесь своим предложением:)
Большое спасибо..!!
Ответы
Ответ 1
То, что вы хотите, возможно, но вам нужно сделать подкласс NSTextFieldCell, а затем использовать этот подкласс в вашем NSTextField. Ключевыми методами, которые вы хотите переопределить, являются drawingRectForBounds:
, selectWithFrame:
и editWithFrame:
Вот сообщение в блоге от сказочного Даниэля Ялкута об этом, он даже включает загружаемую версию, готовую к работе. Сообщение довольно старое, но оно все равно должно работать нормально.
Ответ 2
Чтобы настроить текстовое поле на размер строки, вам необходимо рассчитать размер текста с помощью NSString
sizeWithFont: constrainedToSize: lineBreakMode:
до и после этого изменить размер текстового поля с настройкой фрейма.
Для вертикального выравнивания посмотрите question (и ответы).
Ответ 3
переопределить ViewWillDraw и поместить ваш NSTextField в центр его родительского представления в этот момент. Это также работает с живым изменением размера. Вы также можете настроить размер шрифта в этот момент, чтобы найти шрифт, который соответствует новому размеру.