Интересно, можно ли отображать живые шрифты в элементе управления popupbutton (NSPopupButton)? В настоящее время я загружаю popupbutton со списком шрифтов, доступных следующим образом.NSPopupButton с живыми шрифтами (стилизованный текст)
NSArray *familyNames = [[NSFontManager sharedFontManager] availableFontFamilies];
NSMutableArray *fontarray = [[NSMutableArray alloc] initWithObjects:nil];
[fontarray addObject:@"- Select one - "];
for (NSString *family in familyNames) {
[fontarray addObject:family];
}
[fontmenu1p addItemsWithTitles:fontarray];
Возможно, что-то вроде следующего, используя NSMutableAttributedString?
for (NSString *family in familyNames) {
NSDictionary *attr1 = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:family size:[NSFont systemFontSize]],NSFontAttributeName,[NSColor blackColor],NSForegroundColorAttributeName,nil];
NSMutableAttributedString *aString = [[NSMutableAttributedString alloc] initWithString:family];
[aString setAttributes:attr1 range:NSMakeRange(0,family.length-1)];
[fontarray addObject:aString];
}
[fontmenu1p addItemsWithTitles:fontarray];
Я получаю ошибку за пределы. Я не знаю, подходит ли мой подход. Я даже не знаю, поддерживает ли popupbutton стиль стилизованного текста.
Благодарим за помощь.
Откуда у вас ошибка за пределами границ? – gaige
Я думаю, что это последняя строка. Я не могу точно сказать, потому что для этого нужно более ста шрифтов. Благодарю. –
Моя первая мысль заключалась в том, что fontarray может быть пустым. На самом деле, это не так. Я получаю 348, если подсчитываю количество элементов. Фактически, если я покажу один из объектов с NSLog, я получаю следующее. Arial Blac { NSColor = "NSCalibratedWhiteColorSpace 0 1"; NSFont = "\" Arial-Black 13.00 pt. P [] (0x100528bc0) fobj = 0x101b36150, spc = 4.34 \ ""; Итак, я думаю, что NSPopupButton не может отображать стилизованный текст? Ну, вы можете сделать это с VisualBasic/C#. Поэтому я думал, что смогу сделать это с помощью Objective-C. –