Cocoa勉強会#51-iOS 5で搭載されたページコントローラー

899 views
757 views

Published on

Cocoa勉強会#48
2012/3/17
全画面、ファイル履歴、Lionの新しい機能に対応する
新居雅行

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
899
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Cocoa勉強会#51-iOS 5で搭載されたページコントローラー

  1. 1. iOS 5で搭載された ページコントローラー Masayuki Nii Cocoa Study #51 2012/3/17 12年3月17日土曜日 1
  2. 2. Agenda ページビューの階層化 UIPageViewControllerとテンプレート 動作を確認する 利用例 12年3月17日土曜日 2
  3. 3. ビューコントローラの階層化 従来からある複数のビューコントローラ • • • • ナビゲーションコントローラ、タブコントローラ 複数のビューコントローラを持つビューコントローラ=コンテナビューコントローラ 1ページを複数のビューコントローラで管理する iOS 5で、汎用的に利用できるようになった UIViewControllerクラスに追加されたメソッド • • • • • • • -addChildViewController: -removeFromParentViewController transitionFromViewController:toViewController:duration:options:animations:com pletion: -willMoveToParentViewController: -didMoveToParentViewController: -automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers 独自にUIViewControllerの継承クラスを作るときにはさまざまなメソッドのオーバライ ドができる 12年3月17日土曜日 3
  4. 4. ビューコントローラの階層化 UIViewControllerに追加されたプロパティ • • childViewControllers:所属しているビューコントローラの配列 parentViewController:自分の親のビューコントローラ その他注意点 • • 12年3月17日土曜日 -presentViewController:animated:completion:によってビューを 表示 -presentModalViewController:animated:メソッドは使わずに、 上記のメソッドを使うようにと記述されている 4
  5. 5. ビューコントローラの階層化を利用したクラス UIPageViewControllerによるページめくりビュー • • iOS 5より登場したクラスで、ページめくり機能を提供するビューコントローラ 1つ1つのページが「ビューコントローラによって管理されるビュー」 UIPageViewControllerクラス • • • • -initWithTransitionStyle:navigationOrientation:options::初期化メソッド -setViewControllers:direction:animated:completion::ビューコントローラの登録 dataSource:データソース/delegate:デリゲート/viewControllers:登録されているビュー コントローラ/gestureRecognizers:ジェスチャー navigationOrientation:方向/spineLocation:スピンの位置/transitionStyle:ビュー移動の 形式/doubleSided:2面表示 UIPageViewControllerDataSourceクラス • • • • • 12年3月17日土曜日 -pageViewController:viewControllerBeforeViewController::次のビューコントローラを返す -pageViewController:viewControllerAfterViewController::前のビューコントローラを返す UIPageViewControllerDelegateクラス -pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:: ページ移動後に呼び出される -pageViewController:spineLocationForInterfaceOrientation::方向に応じたスピン位置を返す 5
  6. 6. さて、ページビューを使ってみよう! とはいえ、これはAPIだけだとさっぱりわからん • サンプルプログラムもない プロジェクトのテンプレートに「Page-Based Application」がある • • • 12年3月17日土曜日 シンプルな動作である これを開いてみてビックリ! ある独特なパターンを想定したクラスだった 6
  7. 7. 「Page-Based Application」によるアプリケー ションのオブジェクト関係 UIApplicationMain UIApplication 生成 AppDelegate プロパティ参照 delegate MainStoryboard window RootViewController rootViewController UIWindow viewControllers iPad画面 window DataViewController modelController delegate dataSource PageViewController viewControllers ModelController DataViewController DataViewController 12年3月17日土曜日 7
  8. 8. 動作をチェックする BookViewer_Starterプロジェクト • メソッドのエントリーにNSLogを入れてある 次のような動作を調べる • • • • • 12年3月17日土曜日 iPadシミュレータを縦長にしておく Check! 起動して縦長の1ページ目が出るまでの動作 Check! 1ページ分めくったときの動作 Check! 回転させる Check! 横長で1ページをめくる 8
  9. 9. 作成例 PhotoAlbum • アプリケーションバンドル内の写真をページとして表示する BookViewer • • • • サンプルのPDF:http://msyk.net/ios/sample1.pdf いわゆるPDFビューアで、SfariよりPDFを供給する APIは拡大するとやや荒れるもの ブラウザから開く これらのサンプルは勉強会の中だけにしてください 配布はしないでください 12年3月17日土曜日 9
  10. 10. まとめ ページビューは「APIの問題」ではなく、一定のオブ ジェクトの配置を想定した「パターンを持つクラス」で あった 12年3月17日土曜日 10

×