UITableViewで無限CoverFlowを作る

24
UITableViewで無限CoverFlowを作る Hidetoshi Mori 121117日土曜日

description

for iOSendai

Transcript of UITableViewで無限CoverFlowを作る

Page 1: UITableViewで無限CoverFlowを作る

UITableViewで無限CoverFlowを作る

Hidetoshi Mori

12年11月17日土曜日

Page 2: UITableViewで無限CoverFlowを作る

自己紹介

• 森 英寿• フリーランスプログラマ

hidetoshi.mori

@h_mori

12年11月17日土曜日

Page 3: UITableViewで無限CoverFlowを作る

自己紹介• 主開発言語

• アプリ開発実績Java/.net/Objective-C/Ruby/PHP

SOICHA/TweetMe

ATND暦/生存連絡

12年11月17日土曜日

Page 5: UITableViewで無限CoverFlowを作る

何故UITableView?

• Cell再利用機構を実装する必要がない

12年11月17日土曜日

Page 6: UITableViewで無限CoverFlowを作る

CoverFlowモジュール

• FlowCover (http://www.chaosinmotion.com/flowcover.html)

• iCarousel (https://github.com/nicklockwood/iCarousel)

• OpenFlow (http://apparentlogic.com/openflow/)

• Tapku (https://github.com/devinross/tapkulibrary)

12年11月17日土曜日

Page 7: UITableViewで無限CoverFlowを作る

Infinite UITableView

• 表示データを4セット用意する

• scrollViewDidScroll: でHook

• 限界位置でUIScrollView.contentOffsetを調整

12年11月17日土曜日

Page 8: UITableViewで無限CoverFlowを作る

12年11月17日土曜日

Page 9: UITableViewで無限CoverFlowを作る

UITableViewのカスタマイズ

• 左90度回転

12年11月17日土曜日

Page 10: UITableViewで無限CoverFlowを作る

Cellのカスタマイズ

• CATransform3D処理

• Z座標の固定

• 右90度回転

• スケールの調整• 角度の調整• 位置の調整• 影の調整

12年11月17日土曜日

Page 11: UITableViewで無限CoverFlowを作る

カスタマイズタイミング

• scrollViewDidScroll:(UIScrollView *)

• UITableView#layoutSubviews

12年11月17日土曜日

Page 12: UITableViewで無限CoverFlowを作る

Cellのソート

• 中央から遠い順にソートして再配置

• 対象CellはVisibleRowsのみ

12年11月17日土曜日

Page 13: UITableViewで無限CoverFlowを作る

• 調整の関数化

• IN:中央からCellまでの距離の相対値

• OUT:スケール、角度、位置、影の透明度

変形の基準

12年11月17日土曜日

Page 14: UITableViewで無限CoverFlowを作る

関数作成のコツ

• 線を連続させる

• 単純な区分線形関数にする

• 挙動を確認しながら非線形曲線にする

12年11月17日土曜日

Page 15: UITableViewで無限CoverFlowを作る

スケール調整関数

12年11月17日土曜日

Page 16: UITableViewで無限CoverFlowを作る

角度調整関数

12年11月17日土曜日

Page 17: UITableViewで無限CoverFlowを作る

位置調整関数

12年11月17日土曜日

Page 18: UITableViewで無限CoverFlowを作る

影調整関数

12年11月17日土曜日

Page 19: UITableViewで無限CoverFlowを作る

UIImageViewのカスタマイズ

• 反射Layer、影Layerの配置

• 反射Layerのcontents設定 (setImage: overwride)

12年11月17日土曜日

Page 20: UITableViewで無限CoverFlowを作る

スクロール停止時の位置調整

• 停止時に近いCellを中央にFit

• scrollViewDidEndDragging:

• scrollViewDidEndDecelerating:

12年11月17日土曜日

Page 21: UITableViewで無限CoverFlowを作る

その他調整

• 初期表示時に中央にFit

• デバイス向き変更時に中央にFit

12年11月17日土曜日

Page 22: UITableViewで無限CoverFlowを作る

UITableViewハック時のポイント

• UIScrollViewDelegateを利用

• 処理対象CellはvisibleRowsを使用する

• Cell再利用に注意

• subviewの配置順、ガベージデータ等

• frame設定のタイミングに注意

• Offset等の調整タイミングを意識

12年11月17日土曜日

Page 23: UITableViewで無限CoverFlowを作る

まとめ

• CoverFlow程度であれば簡単

• UITableViewの再利用の仕組みさえ把握すれば応用可能

12年11月17日土曜日