Pages

2006-02-18

NSTabViewでタブの大きさを揃える

プログラミングの話。

NSTabViewで、ラベルの文字列の長さに関わらず、すべてのタブを同じ大きさにする方法が分からずに悩んでいたところ、NSTabViewItemのdrawLabel:inRect:をオーバーライドしてはどうか、とのアドバイスをいただき、早速実行してみた。

まず試してみたのが、drawLabel:inRect:に渡されるNSRectを弄ってsuperに渡す方法。だけどこれはどうもタブそのものじゃなくてタブのラベル文字列だけを描画するメソッドのようで失敗。

次に試したのが、sizeOfLabel:を弄る方法。ここで渡されるNSSizeを弄ってsuperに渡す。そしたら見事タブの大きさを揃えることが出来た。

が、タブの大きさはそろっても今度はラベルの横方向の位置がずれる。そこでさっきのdrawLabel:inRect:に戻る。NSStringのsizeWithAttributes:メソッドを呼んで、ラベルのサイズを得る。あとはタブの大きさとラベルの大きさからラベルの描画位置を導けばOKだ。

0 件のコメント:

コメントを投稿