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 に答える