Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回

21.275 visualizaciones

Publicado el

#potatotips (iOS/Android開発Tips共有会) 第7回
で発表した資料です。

Publicado en: Ingeniería
  • Inicia sesión para ver los comentarios

だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回

  1. 1. だいすきStoryboard 【第7回】potatotips (iOS/Android開発Tips共有会) DeNA 松前健太郎 @kenmaz ※背景画像と内容は直接の関係はありません
  2. 2. 自己紹介 • 松前健太郎 @kenmaz • 前職 動画にコメント流す会社でiOS/スマホまわり • 現職 マンガボックスiOS開発 ________________
  3. 3. 続きはウェb • CodeIQ • DeNA中の人が解説する「マンガボッ クス」システム構成とiOSアプリの 内部構成 • https://codeiq.jp/magazine/ 2014/05/9946/
  4. 4. StoryboardのTips
  5. 5. UIパーツの定義 • なんども繰り返し使うビューはUIパーツとして定義 したい • xibを個別に作ってもいいけど、どうせなら storyboardで完結したい
  6. 6. • canvasにViewControllerを追加 • StoryboardIdを設定 • Simulated MetricsのSize = Freeform にして適当にリサイズ • 必要に応じてUIViewのサブクラスを作ってCustom Classに設定 • viewがとれたらViewControllerは破棄しちゃってOK UIViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"gridview"]; MJGridView* gridView = (MJGridView*)vc.view; ... //labelの設定、sizeの調整など ... [self.scrollView addSubView:gridView]
  7. 7. 表示要素の切り替え • 条件に応じて表示内容切り替えたい • 要素の位置は代替おなじ • 重なっちゃう
  8. 8. ContainerView
  9. 9. まーちょっと大げさかもしれないけど
  10. 10. セグエの有効無効を条件に応 じて切り替え - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { if ([identifier isEqualToString:@"normal_logo"]) { //通常号のロゴ画像 return [self.magazine isNormalVolume]; } if ([identifier isEqualToString:@"digest_logo"]) { //ダイジェスト号のロゴ画像 return [self.magazine isDigestVolume]; } .... }
  11. 11. アプリ起動時に 処理待ちしたい • @sintario さんにおしえてもらった b • アプリ起動して、メイン画面が表示されるまでに、 確実に完了させたい処理がある • バージョンアップ時のマイグレーションとかとか • containerViewを使ってフェーズ分けよう
  12. 12. initial VC ↓ ←main VC ←waiting VC
  13. 13. @implementation MJRootViewController ! - (void)viewDidLoad { [super viewDidLoad]; ! //必要であればマイグレーション [MJMigration migrateWithCompletion:^{ //マイグレーションが完了したので、メイン画面のロード開始 self.migrationFinished = YES; [self performSegueWithIdentifier:kMainEmbedSegueId sender:self]; }]; } ! ! - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender: (id)sender { return self.migrationFinished; }
  14. 14. Storyboard分割 • デバイスごと、機能毎に分割 • storyboardデカくなりすぎるとxcode重い (SSD 必須) • コンフリクトとか
  15. 15. その他 (略) • 微妙な操作はカーソルキーで • ダブルタップすればカーソルキーで微調整できるよ • プレビュー機能使おう • iOS6のdeltaの調整のときに使うくらいかな? • option + preview ってわかりヅラ • 回転したときのチェック • Simulated Metrics > Orientation • Device Family = iPadのときの追加機能 • push,modal,custom 以外にも popover, replace(master-detail) • popover: 吹き出し方向変えたり, アンカーの位置指定したり • replace: master/detailのビュー置換の指定 • Auto Layout については聞かないでください(重要)
  16. 16. DeNAでは エンジニアを 募集しています 渋谷はよい所です 渋谷タワレコ前にて遭遇(撮影許可済み)

×