2011-08-19 106 views
1

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

我想过将状态项目的长度设置为NSVariableStatusItemLength,插入最长的文本,返回长度,然后将其设置为状态项的常量长度。不过,它看起来功能NSStatusItem完全没有用,因为它只是返回NSVariableStatusItemLength而不是实际的长度。

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

回答

1

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

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

[[statusItem _window] frame].size.width 
+0

_window不会对帐户它是一个私有API的编译。什么是最干净的寻找解决方法? – ArtOfWarfare