2011-08-19 79 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