首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置NSMenu/NSMenu项的字体?

如何设置NSMenu/NSMenu项的字体?
EN

Stack Overflow用户
提问于 2012-11-20 01:24:59
回答 4查看 4.7K关注 0票数 6

我不知道如何在NSMenu中设置NSMenuItems的字体/样式。我在NSMenu上尝试了setFont方法,但它似乎对菜单项没有任何影响。NSMenuItem似乎没有setFont方法。我希望它们都有相同的字体/样式,所以我希望只有一个属性可以在某个地方设置。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-20 01:35:55

它们可以有一个属性标题,因此您可以将属性字符串设置为标题,其中包含所有属性,包括字体:

代码语言:javascript
复制
NSMutableAttributedString* str =[[NSMutableAttributedString alloc]initWithString: @"Title"];
[str setAttributes: @{ NSFontAttributeName : [NSFont fontWithName: @"myFont" size: 12.0] } range: NSMakeRange(0, [str length])];
[label setAttributedString: str];
票数 8
EN

Stack Overflow用户

发布于 2012-11-20 01:34:08

NSMenuItem支持将属性字符串作为标题:

代码语言:javascript
复制
- (void)setAttributedTitle:(NSAttributedString *)string;

示例代码:

代码语言:javascript
复制
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];

文档:https://developer.apple.com/library/mac/#documentation/cocoa/reference/applicationkit/classes/nsmenuitem_class/reference/reference.html

票数 8
EN

Stack Overflow用户

发布于 2015-10-03 09:24:12

来自NSFont+ menuBarFontOfSize:是你的朋友。

  • 如果您不打算更改字体系列,则应使用[NSFont menuBarFontOfSize:12]获取默认字体并设置新的大小。如果仅更改颜色,则仍需要通过执行[NSFont menuBarFontOfSize:0].

操作重新设置默认字体大小

因此,只需更改NSMenuItem颜色:

代码语言:javascript
复制
NSDictionary *attributes = @{
                              NSFontAttributeName: [NSFont menuBarFontOfSize:0],
                              NSForegroundColorAttributeName: [NSColor greenColor]
                            };

NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:[menuItem title] attributes:attributes];
[menuItem setAttributedTitle:attributedTitle];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13458963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档