SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
UITableViewで無限CoverFlowを作る

                       Hidetoshi Mori




12年11月17日土曜日
自己紹介
               • 森 英寿
               • フリーランスプログラマ
                  hidetoshi.mori
                  @h_mori




12年11月17日土曜日
自己紹介
               • 主開発言語
                Java/.net/Objective-C/Ruby/PHP

               • アプリ開発実績
                SOICHA/TweetMe
                ATND暦/生存連絡



12年11月17日土曜日
元ネタ


               • @fladdictさんの「UITableViewハック」
                 https://s3-ap-northeast-1.amazonaws.com/
                 slidrs.t1/1338005297280_5734dda2c903f5b359b209804920c189/
                 UITableViewHack.pdf




12年11月17日土曜日
何故UITableView?


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



12年11月17日土曜日
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日土曜日
Infinite UITableView

               • 表示データを4セット用意する
               • scrollViewDidScroll: でHook
               • 限界位置でUIScrollView.contentOffsetを調整


12年11月17日土曜日
12年11月17日土曜日
UITableViewのカスタマイズ



               • 左90度回転



12年11月17日土曜日
Cellのカスタマイズ

               •   CATransform3D処理
                   •   Z座標の固定

                   •   右90度回転
                   •   スケールの調整

                   •   角度の調整
                   •   位置の調整

                   •   影の調整



12年11月17日土曜日
カスタマイズタイミング


               • scrollViewDidScroll:(UIScrollView *)
               • UITableView#layoutSubviews


12年11月17日土曜日
Cellのソート

               • 中央から遠い順にソートして再配置
               • 対象CellはVisibleRowsのみ


12年11月17日土曜日
変形の基準

               •   調整の関数化

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

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




12年11月17日土曜日
関数作成のコツ

               • 線を連続させる
               • 単純な区分線形関数にする
               • 挙動を確認しながら非線形曲線にする


12年11月17日土曜日
スケール調整関数




12年11月17日土曜日
角度調整関数




12年11月17日土曜日
位置調整関数




12年11月17日土曜日
影調整関数




12年11月17日土曜日
UIImageViewのカスタマイズ


               •   反射Layer、影Layerの配置

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




12年11月17日土曜日
スクロール停止時の位置調整



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


12年11月17日土曜日
その他調整

               • 初期表示時に中央にFit
               • デバイス向き変更時に中央にFit


12年11月17日土曜日
UITableViewハック時のポイント

               •   UIScrollViewDelegateを利用

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

               •   Cell再利用に注意

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

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

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



12年11月17日土曜日
まとめ

               • CoverFlow程度であれば簡単
               • UITableViewの再利用の仕組みさえ把握
                すれば応用可能




12年11月17日土曜日
Demo


               • http://www.youtube.com/watch?
                 feature=player_embedded&v=FsiI3hMjedo




12年11月17日土曜日

Mais conteúdo relacionado

Semelhante a UITableViewで無限CoverFlowを作る

iPhoneアプリを作ってみよう
iPhoneアプリを作ってみようiPhoneアプリを作ってみよう
iPhoneアプリを作ってみようNagao Shun
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
SugarcubeをはじめようEihiro Saishu
 
セーラーソン振り返り
セーラーソン振り返りセーラーソン振り返り
セーラーソン振り返りMasafumi Terazono
 
セプテーニさんでのセミナー
セプテーニさんでのセミナーセプテーニさんでのセミナー
セプテーニさんでのセミナーTokusei Noborio
 
PerlとJavaScriptとAndroidとiOSとのんのんバアとオレ
PerlとJavaScriptとAndroidとiOSとのんのんバアとオレPerlとJavaScriptとAndroidとiOSとのんのんバアとオレ
PerlとJavaScriptとAndroidとiOSとのんのんバアとオレNaosuke Yokoe
 
Arcを使ったら人生変わった話
Arcを使ったら人生変わった話Arcを使ったら人生変わった話
Arcを使ったら人生変わった話Yuki Kuroki
 
第3回yidev coding guideline読み
第3回yidev coding guideline読み第3回yidev coding guideline読み
第3回yidev coding guideline読みTomohiko Okita
 
Three.jsで3D気分
Three.jsで3D気分 Three.jsで3D気分
Three.jsで3D気分 Toshio Ehara
 
アクセス解析システムの裏側 (公開用)
アクセス解析システムの裏側 (公開用)アクセス解析システムの裏側 (公開用)
アクセス解析システムの裏側 (公開用)shunsuke Mikami
 

Semelhante a UITableViewで無限CoverFlowを作る (10)

iPhoneアプリを作ってみよう
iPhoneアプリを作ってみようiPhoneアプリを作ってみよう
iPhoneアプリを作ってみよう
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
Sugarcubeをはじめよう
 
セーラーソン振り返り
セーラーソン振り返りセーラーソン振り返り
セーラーソン振り返り
 
セプテーニさんでのセミナー
セプテーニさんでのセミナーセプテーニさんでのセミナー
セプテーニさんでのセミナー
 
PerlとJavaScriptとAndroidとiOSとのんのんバアとオレ
PerlとJavaScriptとAndroidとiOSとのんのんバアとオレPerlとJavaScriptとAndroidとiOSとのんのんバアとオレ
PerlとJavaScriptとAndroidとiOSとのんのんバアとオレ
 
Aiming study#6pdf
Aiming study#6pdfAiming study#6pdf
Aiming study#6pdf
 
Arcを使ったら人生変わった話
Arcを使ったら人生変わった話Arcを使ったら人生変わった話
Arcを使ったら人生変わった話
 
第3回yidev coding guideline読み
第3回yidev coding guideline読み第3回yidev coding guideline読み
第3回yidev coding guideline読み
 
Three.jsで3D気分
Three.jsで3D気分 Three.jsで3D気分
Three.jsで3D気分
 
アクセス解析システムの裏側 (公開用)
アクセス解析システムの裏側 (公開用)アクセス解析システムの裏側 (公開用)
アクセス解析システムの裏側 (公開用)
 

Mais de Hidetoshi Mori

プロジェクト管理しないという提案
プロジェクト管理しないという提案プロジェクト管理しないという提案
プロジェクト管理しないという提案Hidetoshi Mori
 
20130515 diary euglena_en
20130515 diary euglena_en20130515 diary euglena_en
20130515 diary euglena_enHidetoshi Mori
 
Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例Hidetoshi Mori
 
コンシューマアプリを作るということ
コンシューマアプリを作るということコンシューマアプリを作るということ
コンシューマアプリを作るということHidetoshi Mori
 
mongodbの簡易ストレージ化
mongodbの簡易ストレージ化mongodbの簡易ストレージ化
mongodbの簡易ストレージ化Hidetoshi Mori
 
汎用apiサーバの構築
汎用apiサーバの構築汎用apiサーバの構築
汎用apiサーバの構築Hidetoshi Mori
 
20130216 magical record
20130216 magical record20130216 magical record
20130216 magical recordHidetoshi Mori
 
モバイルビジネスの動向
モバイルビジネスの動向モバイルビジネスの動向
モバイルビジネスの動向Hidetoshi Mori
 
インタラクションデザインの考察
インタラクションデザインの考察インタラクションデザインの考察
インタラクションデザインの考察Hidetoshi Mori
 
モバイルビジネスの動向
モバイルビジネスの動向モバイルビジネスの動向
モバイルビジネスの動向Hidetoshi Mori
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程Hidetoshi Mori
 
ゲリラ的サービスの育て方
ゲリラ的サービスの育て方ゲリラ的サービスの育て方
ゲリラ的サービスの育て方Hidetoshi Mori
 
インタラクションデザインの考察
インタラクションデザインの考察インタラクションデザインの考察
インタラクションデザインの考察Hidetoshi Mori
 
Presentation of TapkuLibrary
Presentation of TapkuLibraryPresentation of TapkuLibrary
Presentation of TapkuLibraryHidetoshi Mori
 

Mais de Hidetoshi Mori (20)

Photo mosaic 検証
Photo mosaic 検証Photo mosaic 検証
Photo mosaic 検証
 
プロジェクト管理しないという提案
プロジェクト管理しないという提案プロジェクト管理しないという提案
プロジェクト管理しないという提案
 
Git超入門
Git超入門Git超入門
Git超入門
 
20130515 diary euglena_en
20130515 diary euglena_en20130515 diary euglena_en
20130515 diary euglena_en
 
Evernote連携
Evernote連携Evernote連携
Evernote連携
 
Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例
 
コンシューマアプリを作るということ
コンシューマアプリを作るということコンシューマアプリを作るということ
コンシューマアプリを作るということ
 
mongodbの簡易ストレージ化
mongodbの簡易ストレージ化mongodbの簡易ストレージ化
mongodbの簡易ストレージ化
 
汎用apiサーバの構築
汎用apiサーバの構築汎用apiサーバの構築
汎用apiサーバの構築
 
20130216 小ネタ集
20130216 小ネタ集20130216 小ネタ集
20130216 小ネタ集
 
20130216 magical record
20130216 magical record20130216 magical record
20130216 magical record
 
モバイルビジネスの動向
モバイルビジネスの動向モバイルビジネスの動向
モバイルビジネスの動向
 
Storyboard
StoryboardStoryboard
Storyboard
 
Blocksの活用法
Blocksの活用法Blocksの活用法
Blocksの活用法
 
インタラクションデザインの考察
インタラクションデザインの考察インタラクションデザインの考察
インタラクションデザインの考察
 
モバイルビジネスの動向
モバイルビジネスの動向モバイルビジネスの動向
モバイルビジネスの動向
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程
 
ゲリラ的サービスの育て方
ゲリラ的サービスの育て方ゲリラ的サービスの育て方
ゲリラ的サービスの育て方
 
インタラクションデザインの考察
インタラクションデザインの考察インタラクションデザインの考察
インタラクションデザインの考察
 
Presentation of TapkuLibrary
Presentation of TapkuLibraryPresentation of TapkuLibrary
Presentation of TapkuLibrary
 

Último

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

UITableViewで無限CoverFlowを作る

  • 1. UITableViewで無限CoverFlowを作る Hidetoshi Mori 12年11月17日土曜日
  • 2. 自己紹介 • 森 英寿 • フリーランスプログラマ hidetoshi.mori @h_mori 12年11月17日土曜日
  • 3. 自己紹介 • 主開発言語 Java/.net/Objective-C/Ruby/PHP • アプリ開発実績 SOICHA/TweetMe ATND暦/生存連絡 12年11月17日土曜日
  • 4. 元ネタ • @fladdictさんの「UITableViewハック」 https://s3-ap-northeast-1.amazonaws.com/ slidrs.t1/1338005297280_5734dda2c903f5b359b209804920c189/ UITableViewHack.pdf 12年11月17日土曜日
  • 5. 何故UITableView? • Cell再利用機構を実装する必要がない 12年11月17日土曜日
  • 6. 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日土曜日
  • 7. Infinite UITableView • 表示データを4セット用意する • scrollViewDidScroll: でHook • 限界位置でUIScrollView.contentOffsetを調整 12年11月17日土曜日
  • 9. UITableViewのカスタマイズ • 左90度回転 12年11月17日土曜日
  • 10. Cellのカスタマイズ • CATransform3D処理 • Z座標の固定 • 右90度回転 • スケールの調整 • 角度の調整 • 位置の調整 • 影の調整 12年11月17日土曜日
  • 11. カスタマイズタイミング • scrollViewDidScroll:(UIScrollView *) • UITableView#layoutSubviews 12年11月17日土曜日
  • 12. Cellのソート • 中央から遠い順にソートして再配置 • 対象CellはVisibleRowsのみ 12年11月17日土曜日
  • 13. 変形の基準 • 調整の関数化 • IN:中央からCellまでの距離の相対値 • OUT:スケール、角度、位置、影の透明度 12年11月17日土曜日
  • 14. 関数作成のコツ • 線を連続させる • 単純な区分線形関数にする • 挙動を確認しながら非線形曲線にする 12年11月17日土曜日
  • 19. UIImageViewのカスタマイズ • 反射Layer、影Layerの配置 • 反射Layerのcontents設定 (setImage: overwride) 12年11月17日土曜日
  • 20. スクロール停止時の位置調整 • 停止時に近いCellを中央にFit • scrollViewDidEndDragging: • scrollViewDidEndDecelerating: 12年11月17日土曜日
  • 21. その他調整 • 初期表示時に中央にFit • デバイス向き変更時に中央にFit 12年11月17日土曜日
  • 22. UITableViewハック時のポイント • UIScrollViewDelegateを利用 • 処理対象CellはvisibleRowsを使用する • Cell再利用に注意 • subviewの配置順、ガベージデータ等 • frame設定のタイミングに注意 • Offset等の調整タイミングを意識 12年11月17日土曜日
  • 23. まとめ • CoverFlow程度であれば簡単 • UITableViewの再利用の仕組みさえ把握 すれば応用可能 12年11月17日土曜日
  • 24. Demo • http://www.youtube.com/watch? feature=player_embedded&v=FsiI3hMjedo 12年11月17日土曜日