【发布时间】:2013-06-22 06:18:11
【问题描述】:
我想知道是否可以在弹出按钮控件 (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控件是否支持样式文本。
感谢您的帮助。
【问题讨论】:
-
你从哪里得到越界错误?
-
我认为这是最后一行。我不能确切地说,因为有一百多种字体要遵循。谢谢。
-
我的第一个想法是 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 来做。
标签: objective-c macos cocoa osx-mountain-lion nspopupbutton