NSStatusItem太短,文本被截断

时间:2015-04-28 19:23:19

标签: objective-c macos osx-yosemite

我有一个状态项:

@property (nonatomic, strong) NSStatusItem* item;

我是这样创造的:

item=[[NSStatusBar systemStatusBar] statusItemWithLength: NSVariableStatusItemLength];
item.menu= self.menu;
item.image= icon;
item.highlightMode= YES;

图标为20x20,除了图标我还设置了属性标题:

NSDictionary* attr= @{NSForegroundColorAttributeName : [controller color],
                       NSFontAttributeName : [NSFont userFontOfSize: 12.5]};
item.attributedTitle=[[NSAttributedString alloc]initWithString: @"12190" 
                                                attributes: attr];

问题是状态栏仍然被切断:

enter image description here

它应显示整数,但它会从数字'9'中删除。当还有OS X 10.8时我写了这个应用程序,并且文本没有被删除。如果我没有弄错的话,它只适用于OS X 10.10。

1 个答案:

答案 0 :(得分:0)

设置NSStatusItem title属性时遇到类似问题。当我从空文本转到item.title值中的非空文本时,它出现了。当标题被更改时,第二次删除文本被修复。对我来说,解决方案是在前一个值为空字符串时将item.title设置两次。

示例代码:

NSString *title = @"Status text";
// If previous value was empty set title twice to fix cut off issue
if (item.title.length == 0)
{
  [item setTitle:title];
}
[item setTitle:title];