Вопрос по cocoa, xcode – NSTextField Вертикальное выравнивание

19

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

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

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

Ваш Ответ

3   ответа
11

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

Вот блог-пост от фантастического Даниэля Джалкута об этом он даже включает в себя загружаемую версию, готовую к работе. Пост довольно старый, но все равно должен работать нормально.

Спасибо сосборн .. !! Позвольте мне попробовать это. Я вернусь к вам, если возникнут какие-либо проблемы в этом. :) iUser
Взгляните на NSControl (от которого наследуется NSTextField). У него есть метод setCellClass :. Также неплохо читать документ «Руководство по программированию управления и ячейки» от Apple.
Хорошо у меня естьRSVerticallyCenteredTextFieldCell.h а такжеRSVerticallyCenteredTextFieldCell.m класс, но я не знаю, как его использовать, с моимmyTextField. iUser
1

змер текста сNSString& APOS; ssizeWithFont: constrainedToSize: lineBreakMode: до и после этого настройте размер текстового поля с помощью настройки рамки.

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

@iUser спрашивает о NSTextField, который отличается от UITextField. NSTextField не имеет свойства contentVerticalAlignment.
Спасибо Кай .. !! я используюNSTextField который не даетcontentVerticalAlignment вариант. Любое предложение ? iUser
Сожалею. Я просто изменил свой ответ.
-1

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

объясните свой отрицательный ответ и обратите внимание, что на этот ответ был дан ответ в 2015 году. Это похоже на принятый ответ, просто вместо того, чтобы создавать собственный чертеж в NSTextFieldCell, вы делаете это в NSTextField ...

Похожие вопросы