我的应用程序中有一个NSStatusItem,可以配置为显示一些文本。此文本可以更改,问题是,每次更改长度时,整个状态项都会更改其长度,这会导致“宽度闪烁”。
我考虑将状态项的长度设置为NSVariableStatusItemLength,插入尽可能长的文本,重新获得长度,然后将其设置为状态项的恒定长度。但是,看起来NSStatusItem的length函数对此完全没有用处,因为它只返回NSVariableStatusItemLength而不是实际长度。
那么,有没有其他方法可以预先计算NSStatusItem需要多长时间才能容纳一些文本和可选的图标?例如,图标和字体/大小是否保证在所有Mac系统上都是相同的,这样我就可以简单地在我的系统上“测量”一个最佳长度?
发布于 2011-08-22 03:42:42
获取长度的一种解决方法是使用[NSImage size].width获取状态项中任何图标的宽度,然后使用[NSString sizeWithAttributes:nil].width获取字符串的宽度。根据口味添加填充物。
另一种使用私有API的方法是设置最长的字符串,然后获取宽度,如下所示:
[[statusItem _window] frame].size.widthhttps://stackoverflow.com/questions/7120792
复制相似问题