LoginSignup
9
10

More than 5 years have passed since last update.

[iOS]ストーリーボードとUIの色々メモ

Posted at

やりたいことはすぐできるようにしたいっぽい。ぽいぽい。

xcode5 ios7で全画面表示する

1.プロジェクトファイルのTARGETSのinfoタブからCustom iOS TargetPropertiesを開き、

view controller-based status bar appearance キーにNOを設定
RAWプロパティとしては以下。
UIViewControllerBasedStatusBarAppearance

2.プロジェクトファイルのTARGETSのGeneralタブからDeployment Infoを開き、
Hide during application launchのチェックマークをONに設定

これで没入も快適。

3.ストーリーボード上のルートビューコントローラのAttributeインスペクタでStatus BarTop BarNoneに設定


ナビゲーションバーは表示したくないが、pushセグエの動作は使いたい

ストーリーボードでナビゲーションコントローラを配置すると、まあなぜかテーブルビューコントローラもセットで付いてくる(テンプレだから仕方ないかもしれないが、ウザい)。しかしそれは削除して、ただのビューコントローラを遷移先に差し替えてもそれは全く問題ない。

なので、ナビゲーションバーを表示したくない場合でも、pushセグエを使いたければ、ここは黙してナビゲーションコントローラを使うのが良い。
で、邪魔なナビゲーションバーを(非表示に)消してしまえば良い。ナンダッテー
これはストーリーボード上のナビゲーションビューコントローラのAttributeインスペクタでStatus BarTop BarNoneに設定すれば良いだけで簡単。

で、スワイプジェスチャとpushセグエ、Unwindセグエを結びつける。Unwindもそのまま使える。わざわざカスタムセグエを作ったりする必要も無く、某ニュースアプリみたいな動きができる、とてもナイスな感じで。


ストーリーボードを、AppDelegateのコードでAddする

作成したストーリーボードは、コードで読み込んで生成することができる。生成するにはstoryboardWithName:bundleメソッドを使う。Nameについては、ストーリーボードのファイル名(.storyboardを含まない)を指定すれば良い(bundleの指定が必要なのは、通常とファイルの位置が違う場合。通常はnilでOK)


- (BOOL)application:(UIApplication *)application
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UIStoryboard *sb =
        [UIStoryboard storyboardWithName:@"StoryboardName" bundle:nil];
    //ストーリーボードに設定されたイニシャルビューコントローラを取り出す。
    UIViewController *vc =
        [sb instantiateInitialViewController];
    //rootViewControllerをwindowに設定
    self.window.rootViewController = vc;
    //windowを表示
    [self.window makeKeyAndVisible];
    return YES;
}

分割した複数のストーリーボードをマージして使いたいときや、ストーリーボードを場合で使い分けたい等の場合、状況に応じたコードでストーリーボードを生成する。その際ビューコントローラも一緒に生成されるので、それを取り出してナビゲーションコントローラやタブビューコントローラ等にaddChildViewControllerしてやればよい。また、状況に応じて、生成するものを変えるとハッピー。


UIPageViewControllerで、ページコントロールを表示する

Page-Based Applicationのテンプレートを使い、ModelContorllerに以下のコードを追加する。(UIPageViewControllerDataSourceプロトコルのデリゲートメソッド2つ)
たったこれだけで、iOSのアプリ選択画面のように、ページ遷移とページコントロールのドットが表示されるようになる。ナンダッテー

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
    return [self.pageData count];
}

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
    return 0;
}

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10