У меня есть перо панели с выходом для одного из его текстовых полей, которое установлено в перо для выравнивания по центру.Когда я отображаю панель, я бы хотел, чтобы это текстовое поле было жирным.Поскольку NSTextField является подклассом NSControl, он может использовать метод setAttributedStringValue и принимать приписанную строку.Поэтому я добавил жирный шрифт, например:
NSFont *fontBolded = [NSFont fontWithName:@"Baskerville Bold" size:12.0f];
NSDictionary *dictBoldAttr = [NSDictionary dictionaryWithObject:fontBolded forKey:NSFontAttributeName];
NSString *sHelloUser = NSLocalizedString(@"Hello User", @"Hello User");
NSAttributedString *attrsHelloUser = [[NSAttributedString alloc] initWithString: sHelloUser attributes:dictBoldAttr];
[self.fooController.tfPanelCenteredField setAttributedStringValue:attrsHelloUser];
[attrsHelloUser release];
Полужирный шрифт отображается нормально, но поле теперь выровнено по левому краю.
Я попытался добавить setAlignment, но это не дало эффекта:
[self.fooController.tfPanelCenteredField setAlignment:NSCenterTextAlignment];
Итак, я попытался добавить стиль центрированного парапрафа к атрибутам приписанной строки:
NSFont *fontBolded = [NSFont fontWithName:@"Baskerville Bold" size:12.0f];
NSMutableParagraphStyle *paragStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[paragStyle setAlignment:NSCenterTextAlignment];
NSDictionary *dictBoldAttr = [NSDictionary dictionaryWithObjectsAndKeys:paragStyle, NSParagraphStyleAttributeName, fontBolded, NSFontNameAttribute, nil];
NSString *sHelloUser = NSLocalizedString(@"Hello User", @"Hello User");
NSAttributedString *attrsHelloUser = [[NSAttributedString alloc] initWithString: sHelloUser attributes:dictBoldAttr];
[self.fooController.tfPanelCenteredField setAttributedStringValue:attrsHelloUser];
[attrsHelloUser release];
[paragStyle release];
Теперь текстовое поле снова центрировано, но выделение жирным шрифтом пропало.Это как если бы атрибутивная строка могла принять один и только один атрибут.Я упускаю что-то простое?