Skip to content →

iOS5から使えるAppearanceを使って、Navigationbarをカスタマイズする

iOS5から、ナビゲーションバーやタブバーなどを一括設定で設定できるようになりました。このことで、背景の色や文字色、背景画像を使ったりとバリエーションを簡単に増やすことができるようになっています。

ナビゲーションバーの背景画像を設定

全てのビューに適用させたいので、AppDelegate.mに記述して一括設定します。起動直後に動くdidFinishLaunchingWithOptionsの中に設定を記述します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIImage *image = [UIImage imageNamed:@"back.png"];
    [[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:0.80 green:0.71 blue:0.51 alpha:1.0]];
    return YES;
}

setBackgroundImage:imageで背景画像を設定しています。サイズはナビゲーションバーと同じサイズ(320×44と倍のサイズでRetina用を準備)で作ります。

そして、ナビゲーションバーでボタンを出す時に、どの色に合わせるかをsetTintColorで設定しています。そうすると、下のように背景に画像が入り、かつボタンの色もTintColorに合わせた色が反映されます。

ナビゲーションバーのタイトルフォント設定

デフォルトでは、白でシャドウがかかったものになりますが、背景の色が薄ければ文字が見えません。この文字も設定できます。

[[UINavigationBar appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor colorWithRed:0.31 green:0.25 blue:0.17 alpha:1.0], //タイトルの文字色
      UITextAttributeTextColor,
      [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.3], //シャドウの色
      UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0, -2)], //シャドウの強さ
      UITextAttributeTextShadowOffset,
      nil,
      UITextAttributeFont,
      nil]];

従来に比べ、かんたんに設定でき、アプリ独自の色も出せるようになったので、積極的に使っていきたい機能です。

[sc name=”ios”][sc name=”engeneer”]

Published in ビジネスハック 開発奮闘記