2
如何創建一個NSPopupButton,其中每個項目都有自己的字體,如附件屏幕截圖所示。我想用綁定來實現這一點。帶有字體系列列表的NSPopButton
我能夠通過將NSPopupButton內容綁定到由[[NSFontManager sharedFontManager] availableFontFamilies]
返回的值來填充NSPopupButton,但我無法弄清楚如何獲取每個單獨的行以其自己的字體?
如何創建一個NSPopupButton,其中每個項目都有自己的字體,如附件屏幕截圖所示。我想用綁定來實現這一點。帶有字體系列列表的NSPopButton
我能夠通過將NSPopupButton內容綁定到由[[NSFontManager sharedFontManager] availableFontFamilies]
返回的值來填充NSPopupButton,但我無法弄清楚如何獲取每個單獨的行以其自己的字體?
我不知道我能做到這一點,但以下似乎工作。
// fontPopup1 is an instance of NSPopupMenu
NSMenu *menu = [[NSMenu alloc] init];
NSArray *familyNames = [[NSFontManager sharedFontManager] availableFontFamilies];
NSMutableArray *fontArray = [[NSMutableArray alloc] initWithObjects:nil];
for (NSString *family in familyNames) {
[fontArray addObject:family];
}
for (NSInteger i2 = 0; i2 < fontArray.count; i2++) {
NSString *family = [fontArray objectAtIndex:i2];
NSMutableAttributedString *attrStr =[[NSMutableAttributedString alloc]initWithString:family];
CGFloat fontSize = [NSFont systemFontSize];
[attrStr addAttribute:NSFontAttributeName value:[NSFont fontWithName:family size:fontSize] range:NSMakeRange(0,family.length)];
NSMenuItem *menuItem = [[NSMenuItem alloc] init];
[menuItem setAttributedTitle:attrStr];
[menu addItem:menuItem];
}
[fontPopup1 setMenu:menu];
如果必須使用綁定的,你可以有NSFont's的''一個和NSArray'創建一個'NSValueTransformer'創建'NSAttributedString'像[埃爾番茄的答案](HTTP://計算器。 com/a/30189936/573976)來自'NSFont'對象。 – Jesper