NSSplitView

え〜 MailUnreadStatusBar のバグ修正、iPalmMemo のバグ修正とリリースしました。MailUnreadStatusBar は自分が使っているメールサーバと違った結果を返すサーバが有ったりで、中々難産です。
iPalmMemo の方は Intel Mac でのバグでしたが、リリースしてから2人バグレポートが有りました。まぁ iPalmMemo のユーザが少ないのも有りますが、やはり Palm ユーザが減少しているんでしょうかねぇ。

で、NSSplitView をプログラム起動時、前回終了した大きさで分割する方法です。以前から旨く出来なくて、色々調べても自分でスプリットビューを作るか、誰かが作成したのを利用させて貰うしか無いような感じでした。そこで、いつものようにいい加減な対処方法を思いついたので書いてみます。
NSSplitView のサブビューのフレームが保存されているとして、NSSplitView を表示する時に

[self performSelector:@selector(resizeMailIndextableView:) withObject:nil afterDelay:0.01];

なんて書いてみます。これは後で(afterDelay)このメソッド(resizeMailIndextableView:)を呼んでね、と言うやつです。
で、resizeMailIndextableView メソッド内で NSSplitView 内のサブビューのフレームを設定します。

– (void)resizeMailIndextableView:(id)object
{
 NSRect tableRect = [mView1 frame];
 [mView1 setFrame:mTableViewRect];
 [mSplitView adjustSubviews];
 if(tableRect.size.height != mTableViewRect.size.height)
  [self performSelector:@selector(resizeMailIndextableView:) withObject:nil afterDelay:0.01];
}

このメソッドの中でフレームを設定して希望する値になるまで自分自身を呼び続けます。
これを実行すると指定した大きさに、にょろっと変化します。2分割だと出来ましたが、2以上だとどうなるのかは不明です、どなたか実験してみて下さい。旨くいけばもうけもんです。
上記ソースだと高さを調整してますが、多分幅でも、両方でも OK だと思います。数行で出来るので、私はこれで良いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です