Выравнивание строк в NSFont / NSView

Он, когда я рисую текст в моем представлении так:

NSMutableDictionary *textAttrib = [[NSMutableDictionary alloc] init];
[textAttrib setObject:[NSFont fontWithName:@"Helvetica Light" size:15] forKey:NSFontAttributeName];
[textAttrib setObject:[NSColor grayColor] forKey:NSForegroundColorAttributeName];
[mouseString drawAtPoint:textPoint withAttributes:textAttrib];

как я могу изменить выравнивание текста? Мне просто нужно простое выравнивание влево / вправо, и я не могу найти информацию об этом, только в текстовых полях. Спасибо!

2 ответа

Решение

Нет такой концепции выравнивания с [NSString drawAtPoint:withAttributes:] метод, и это имеет смысл, если вы думаете об этом. Выравнивание - это концепция появления строки относительно содержимого элемента управления (обычно NSTextField).

Вы могли бы, однако, попробовать [NSString drawInRect:withAttributes:] где эта концепция существует. Смотри этот ТАК вопрос.

ОБНОВЛЕНИЕ: Этот вопрос не является полным без (теперь удаленного) ответа, данного @justin, который показывает, как установить выравнивание текста в NSAttributedString, Оба ответа верны, но ни один не полон.

Вам не хватает атрибута: NSParagraphStyleAttributeName, который является атрибутом NSParagraphStyle. Если вы создадите объект NSParagraphStyle, вы можете установить это свойство:

@property(readonly) NSTextAlignment alignment;  // readwrite for NSMutableParagraphStyle

В вашем случае вы должны установить его в NSTextAlignmentLeft или NSTextAlignmentRight.

Пример:

NSMutableParagraphStyle* style=[[NSMutableParagraphStyle alloc]init];
style.alignment= NSTextAlignmentLeft;
[textAttrib setObject: style forKey: NSParagraphStyleAttributeName];
Другие вопросы по тегам