UITableView もどきのデモ
- Apple
- 開発
数日前、Thunderbolt を搭載した新 MacBook Pro の発表の直後に、Lion の詳細 & Developer Preview 版が突然公開された。
その頃自分は、Mac 上で動き、UITableView のように手軽に使え、CALayer を表示に使い、セルを効率よく再利用して、行数が増えても表示が軽いテーブルビューを作るため、実装を進めていた。
Mail.app のスクリーンショットや Twitter での数人の発言から、Lion では NSTableView が UITableView の良さを取り入れて生まれ変わっていることが予想でき、作る必要はなかったみたい。それでも、何千個にもなるセルの効率のいい位置計算方法を考えたり、いろいろと勉強になった。
(↑見た目から、何に使うために作っていたのかわかるはず...)
まだ未完成だけど、デモのためのアプリケーションを作ったのでここに置いておく。(Snow Leopard でのみ動作確認。使用は自己責任で。)
セクションと行の数は起動するたびに変わる。
画面からはみ出たセルが消え、見える範囲に入った部分のセルとして再利用される様子がよくわかるので、こういうビューを作るときの参考になるかも。(右矢印キーを押して右カラムにいくと "Clip views" チェックボックスがある。)
iOS っぽいスクロールバーは Lion の挙動を予想したもの。カーソルを乗せると背景が現れるのは予想が正しかったみたい。
2011.2.28 追記
PXListView というものを発見。OS X 10.5 以降に対応しているみたい。ソースも公開されている。
-reloadData
が呼ばれたとき、delegate の -listView:heightOfRow:
をすべての行に対して呼び出し、行の高さではなく y = 0 からの絶対量をキャッシュするようになっているみたい。自分も同じような手法を使った。
Share
リンクも共有もお気軽に。記事を書くモチベーションの向上に役立てます。