我想知道是否可以在popupbutton控件中显示实时字体(NSPopupButton)?目前,我用以下方式加载一个带有可用字体列表的popupbutton。NSPopupButton with Live Fonts(Styled Text)
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来做到这一点。 –