2011年4月25日月曜日

Cocoa Tabbed Interface tabの最小サイズ

tabが増えてくるとだんだんtabのタイトルに表示できる文字数が減ってくる。
そのためたいていのtabbedInterfaceでは、tabの最小サイズを設定して、それ以下になりそうになると多すぎるtabの一部を隠すようにしている。

驚いたのがChromeで、いくらtabを開いてもtabはひとつも隠れない。そんなのをCMでやっていた気もする。

firefoxやsafari、ついでにXcode4でもtabの挙動をいろいろ調べた。appleのとった方法は今イチよく理解出来ない。


tabが増えすぎると、「一番新しいtab」が一番右端に表示されて、「それまで表示されていたtab」が温存され、新しいtabは大方隠される。tabの移動は画像のようにmenuからアクセスするしかないようだ。この辺、深く追求したわけでもないのでいい方法があるのかもしれないが。

firefoxの挙動が一番しっくりくる。tabが増えた分どんどん新しいtabを表示して、元から表示されていたtabは横スクロールで隠れていく。tabの両端にスクロールボタンが出る。ただ、アクティブなtabまで隠れてしまうのが今イチ使いにくい、とふだんから感じている。この辺は個人の好みだけど。

ただ、作っているのがファイルマネージャーのようなものである。「バックグラウンドで新しいtabを開く」ことは考えていない。tabのサイズ変更はウィンドウのサイズ変更のタイミング一番多いと思われる。

「現在開いているtab」(アクティブなtab)が隠れないようにtabのサイズ変更ができるようにしたい。
そこでいろいろやってみた結果、まあまあ納得のいく挙動をさせることができた。

まず普通の状態。

10個のtabを全て表示している。これをウィンドウのサイズを小さくしていくと、

設定しておいたtabの最小幅まで各tabが縮んだあと、一番右端のtabが隠れて「隠れたtabがありますよ」インジケーターが出る。

では、アクティブなtabがこういう状態ならどうなるか。

ウィンドウを小さくしていくと、アクティブなtabの右側のtabが消えていく。

しかしアクティブなtabまでくると、今度は左側から消えていく。


ここまで作るのに大変な苦労をした。「アクティブなtabが右端に来た以降の挙動」をどうやってプログラミングするか、かなり悩んでしまって時間がかかった。素人の悲しさだなー。以降は明日。

0 件のコメント:

コメントを投稿