我無法弄清楚如何在NSMenu中設置NSMenuItems的字體/樣式。我嘗試了NSMenu上的setFont方法,但它似乎對菜單項沒有任何影響。 NSMenuItem似乎沒有setFont方法。我希望他們都有相同的字體/樣式,所以我希望只有一個屬性可以在某處設置。如何設置NSMenu/NSMenuItems的字體?
回答
他們可以有一個屬性的標題,所以你可以設置一個屬性字符串作爲標題與所有它的歸屬,字體包括:
NSMutableAttributedString* str =[[NSMutableAttributedString alloc]initWithString: @"Title"];
[str setAttributes: @{ NSFontAttributeName : [NSFont fontWithName: @"myFont" size: 12.0] } range: NSMakeRange(0, [str length])];
[label setAttributedString: str];
NSMenuItem有歸因字符串支持,職稱:
- (void)setAttributedTitle:(NSAttributedString *)string;
示例代碼:
NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"Hi, how are you?" action:nil keyEquivalent:@""];
NSDictionary *attributes = @{
NSFontAttributeName: [NSFont fontWithName:@"Comic Sans MS" size:19.0],
NSForegroundColorAttributeName: [NSColor greenColor]
};
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:[menuItem title] attributes:attributes];
[menuItem setAttributedTitle:attributedTitle];
歸因標題做到這一點的最好方法是什麼?然後我必須迭代菜單並更改每個項目,並且每次添加一個新項目時,我都必須設置歸屬標題。我希望有一種方法來設置它一次 – JPC
http://stackoverflow.com/questions/32426341/using-the-fontwithsize-api-with-san-francisco如何利用這與你的例子? –
其實[NSMenu setFont:]適用於所有菜單項子菜單(如果最後一個沒有自己的字體)。也許你在設置菜單字體之前設置了歸屬標題? 在編寫自己的過程來迭代菜單項之後,意識到了這一點。
如果你需要一些自定義的處理(即改變字體因爲並非所有的項目,或自定義爲不同的項目),這裏是一個簡單的迭代代碼:
@implementation NSMenu (MenuAdditions)
- (void) changeMenuFont:(NSFont*)aFont
{
for (NSMenuItem* anItem in self.itemArray)
{
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:aFont forKey:NSFontAttributeName];
anItem.attributedTitle = [[[NSAttributedString alloc] initWithString:anItem.title attributes:attrsDictionary] autorelease];
if (anItem.submenu)
[anItem.submenu changeMenuFont:aFont];
}
}
@end
+ menuBarFontOfSize:
從NSFont
這裏是你的朋友。
- 如果您不打算更改字體系列,則應使用
[NSFont menuBarFontOfSize:12]
來獲取默認字體並設置新尺寸。 - 如果您只是在更改顏色,您仍然需要通過執行
[NSFont menuBarFontOfSize:0]
來設置默認字體大小。
所以只能改變NSMenuItem
顏色:
NSDictionary *attributes = @{
NSFontAttributeName: [NSFont menuBarFontOfSize:0],
NSForegroundColorAttributeName: [NSColor greenColor]
};
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:[menuItem title] attributes:attributes];
[menuItem setAttributedTitle:attributedTitle];
- 1. 如何設置Helvetica字體?
- 2. AlivePdf如何設置字體?
- 3. 如何爲System.Windows.Fontstyle設置粗體字體?
- 4. 如何設置Cpropertysheet的字體?
- 5. 如何設置NSTextView的默認字體?
- 6. 如何設置phantomjs的默認字體?
- 7. 如何設置字體的顏色?
- 8. 如何設置吐司的字體?
- 9. 如何設置TTStyledTextLabel的鏈接字體
- 10. 的JTextPane:如何設置字體大小
- 11. 如何設置Unicode控件的字體?
- 12. 如何設置WebView的字體樣式?
- 13. 如何設置UITextView的字體大小?
- 14. 字體設置
- 15. 如何爲後備字體設置不同的字體重量?
- 16. JS:window.open - 如何設置Open Sans字體?
- 17. CKEditor 4 - 如何設置默認字體?
- 18. 如何設置字體樣式在FPDF
- 19. 如何設置Bokeh legend字體?
- 20. 如何設置字體大小FONT-FAMILY
- 21. 如何在textview中設置telugu字體?
- 22. 如何設置DataGridComboBoxColumn字體屬性?
- 23. 如何在NSTextView中設置字體?
- 24. 如何在emacs中設置ttf字體
- 25. 如何設置字體家族?
- 26. 如何爲gcheckbox對象設置字體
- 27. 如何設置字體樣式?
- 28. 如何爲CATextLayer()設置系統字體?
- 29. 如何在Imagick PHP中設置字體?
- 30. Libgdx textfield:如何設置字體大小?
歸屬標題是做這件事的最好方法嗎?然後我必須迭代菜單並更改每個項目,並且每次添加一個新項目時,我都必須設置歸屬標題。 – JPC
您可以編寫除了設置字符串值之外的個人setter,還設置font.Subclass NSTextField,如果您需要使用屬性執行復雜的事情。 –