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

Preview:

DESCRIPTION

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

Citation preview

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

DeNA 松前健太郎 @kenmaz

※背景画像と内容は直接の関係はありません

自己紹介

• 松前健太郎 @kenmaz

• 前職 動画にコメント流す会社でiOS/スマホまわり

• 現職 マンガボックスiOS開発 ________________

続きはウェb• CodeIQ

• DeNA中の人が解説する「マンガボックス」システム構成とiOSアプリの内部構成

• https://codeiq.jp/magazine/2014/05/9946/

StoryboardのTips

UIパーツの定義

• なんども繰り返し使うビューはUIパーツとして定義したい

• xibを個別に作ってもいいけど、どうせならstoryboardで完結したい

• 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]

表示要素の切り替え• 条件に応じて表示内容切り替えたい

• 要素の位置は代替おなじ

• 重なっちゃう

ContainerView

まーちょっと大げさかもしれないけど

セグエの有効無効を条件に応じて切り替え

- (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]; } .... }

アプリ起動時に 処理待ちしたい

• @sintario さんにおしえてもらった b

• アプリ起動して、メイン画面が表示されるまでに、確実に完了させたい処理がある

• バージョンアップ時のマイグレーションとかとか

• containerViewを使ってフェーズ分けよう

initial VC ↓

←main VC

←waiting VC

@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; }

Storyboard分割

• デバイスごと、機能毎に分割

• storyboardデカくなりすぎるとxcode重い (SSD必須)

• コンフリクトとか

その他 (略)• 微妙な操作はカーソルキーで

• ダブルタップすればカーソルキーで微調整できるよ

• プレビュー機能使おう

• iOS6のdeltaの調整のときに使うくらいかな?

• option + preview ってわかりヅラ

• 回転したときのチェック

• Simulated Metrics > Orientation

• Device Family = iPadのときの追加機能

• push,modal,custom 以外にも popover, replace(master-detail)

• popover: 吹き出し方向変えたり, アンカーの位置指定したり

• replace: master/detailのビュー置換の指定

• Auto Layout については聞かないでください(重要)

DeNAでは エンジニアを 募集しています

渋谷はよい所です

渋谷タワレコ前にて遭遇(撮影許可済み)