2011-08-05 22 views
1

私はアイテムの長いメニューを持つNSPopUpButtonを持っていますが、そのうちのいくつかはボタンの閉じた幅よりもかなり広くなっています。NSPopUpButtonのNSMenuItemの短い表示形式を変更するにはどうすればよいですか?

:メニューが閉じているとき

「本当に長い名前のスタートではないことは興味深い(重要な情報)」

、これはと表示されますので、同様にメニュー項目のタイトルのいくつかはあります「本当に長い名前のスタート番目ない...」私はそれのように表示したい

:「

本当にリットルのスタートを...(importa nt info) "

NSPopUpButtonが省略記号をどのように作成しているのか分かりません。 NSMenuItemでセレクタが呼び出されていますか? NSPopUpButtonまたはNSMenuは何とかそれを処理しますか?

どのクラスをサブクラス化する必要があり、どのセレクタを上書きまたは実装する必要がありますか?

多くのありがとうございます。

答えて

0

このメカニズムをトランケートといいます。 Interface Builderにという改行があります。は、コントロールグループにグループ化されています。あなたが探している設定は、Truncate Middleと呼ばれ、メニュー項目の中央から文字が取り出されます。

しかし、(important info)の部分が "..."の後に残っているだけでなく、むしろName of my Me…tem (important info)であるため、これで問題は完全に解決されるわけではありません。さらに、重要な情報が部分的に切り捨てられてしまうこともあります。しかし、私はとあなたが大丈夫です限り、重要な情報はいくつかの数字またはいくつかの文字です。

メニュー項目に画像を追加すると、必要に応じて複数のバッジが表示されることがありますか?多分、文字列を切り捨てられないようにするための属性付き文字列のオプションもありますが...確かにわかりません。

+0

インターフェイスビルダーを使用していない以外は、私にとってはうまくいきます。 Fabianが私に必要な手がかりをくれました。 NSPopUpButtonサブクラスインスタンス内から: [[selfセル] setLineBreakMode:NSLineBreakByTruncatingMiddle] – Mira

0

Fabianが私に必要な手がかりをくれました。ありがとう!

[[self cell] setLineBreakMode: NSLineBreakByTruncatingMiddle] 

しかし、細かい制御を得る方法があれば、それはさらに優れています。トランケーションをより正確に制御する方法はありますか?