1

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

我考虑将状态项的长度设置为NSVariableStatusItemLength,插入尽可能长的文本,取回长度,然后将其设置为状态项的恒定长度。但是,看起来 的length函数NSStatusItem对此完全没有用,因为它只是返回NSVariableStatusItemLength而不是实际长度。

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

4

1 回答 1

1

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

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

[[statusItem _window] frame].size.width
于 2011-08-21T19:42:41.773 回答