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”]
SHARE
PROFILE

入江 慎吾
Webサービスを作るのが大好きです。制作会社10年→フリーランス→受託をやめサービス開発に専念。プログラミングのメンターサービスMENTAは月間流通額約1,300万を突破🚀 YouTubeでは個人開発について語ってます / 「自分のサービスで生きていく」をコンセプトに個人開発オンラインサロン「入江開発室」を運営(詳しいプロフィール)
Webサービスを作るのが大好きです。制作会社10年→フリーランス→受託をやめサービス開発に専念。プログラミングのメンターサービスMENTAは月間流通額約1,300万を突破🚀 YouTubeでは個人開発について語ってます / 「自分のサービスで生きていく」をコンセプトに個人開発オンラインサロン「入江開発室」を運営(詳しいプロフィール)