View
18.804
Download
4
Category
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では エンジニアを 募集しています
渋谷はよい所です
渋谷タワレコ前にて遭遇(撮影許可済み)
Recommended