获取NSStatusItem的长度

时间:2011-08-19 11:18:03

标签: macos cocoa nsstatusitem

我的应用程序中有一个NSStatusItem,可以配置为显示一些文本。这个文本可以改变,问题是,每次改变长度时,整个状态项改变其长度,这会导致“宽度闪烁”。

我考虑过将状态项的长度设置为NSVariableStatusItemLength,插入最长的文本,获取长度,然后将其设置为状态项的常量长度。但是,看起来length的{​​{1}}函数对此完全没用,因为它只返回NSStatusItem而不是实际长度。

那么,有没有另一种方法来预先计算NSStatusItem需要多长时间来保存一些文本和可选的图标?例如,是图标&所有Mac系统上的字体/大小保证相同,所以我可以简单地“测量”我系统上的最佳长度?

1 个答案:

答案 0 :(得分:1)

获取长度的解决方法是使用[NSImage size].width获取状态项中任何图标的宽度,然后使用[NSString sizeWithAttributes:nil].width获取字符串的宽度。添加填充味道。

使用私有API的另一种方法是设置最长的字符串,然后按如下方式获取宽度:

[[statusItem _window] frame].size.width