iOS 7 appの外観を変更(NavigationBar,TabBar,StatusBar)
4012 ワード
NavigationBar戻るボタンのアイコンを変更
この問題はこのいわゆる問題の中で私が最も時間をかけて解決したもので、初心者の私には本当に小さな穴です.先に行った回り道は、最初はUIVEewController(例えばMyViewController)を継承し、その
navigationItem
の属性leftBarButtonItem
を設定することによって実現され、このボタンにクリックして戻る方法を実現しなければならない.このような欠点は次のとおりです.しかし、AppDelegateでグローバル設定を行い、コードは以下の通りです.
UIImage *backImage = [[[UIImage imageNamed:@"navigation_back"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, 11.5, 0)];
[[UINavigationBar appearance] setBackIndicatorImage:backImage];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backImage];
注:戻るボタンの画像は44*44 pointの画像を採用していますが、なぜ直接設定すると11.5 pointに偏るのか分かりませんので、修正するしかありません.
また、戻るボタンの文字を隠すには、このようなworkaroundの奇技を見つけただけです.
[[UIBarButtonItem appearance]
setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)
forBarMetrics:UIBarMetricsDefault];
実はボタン文字を60ポイント上に移動したのですが、非表示になっていません.ただ画面には見えないだけです.Revealで見ることができます.
NavigationBarの背景色を変更
[UINavigationBar appearance].barTintColor = [UIColor blueColor];
NavigationBarのフォント色を変更
NavigationBarの上にはフォントの色を変える2つの場所があります.1つはタイトルで、2つは左右のボタンの文字です.
ボタンのテキスト色を変更するには、次の手順に従います。
[UINavigationBar appearance].tintColor = [UIColor whiteColor];
タイトルのテキスト色を変更するには、次の手順に従います。
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
NavigationBarの下の影を落とす
iOS 7 NavigationBarの下にはデフォルトでシャドウがありますが、NavigationBarと下の内容の背景色を一体化させるには、このシャドウを削除します.
[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
TabBarのフォント色を変更
[UITabBarItem.appearance setTitleTextAttributes:
@{ NSForegroundColorAttributeName : [UIColor blueColor] }
forState:UIControlStateNormal];
[UITabBarItem.appearance setTitleTextAttributes:
@{ NSForegroundColorAttributeName : [UIColor whiteColor] }
forState:UIControlStateSelected];
StatusBarの色を変更
iOS 7以降、status barの背景色が透明色に変わり、appの色に応じてstatus barのフォント色(黒と白)が自動的に変更されます.しかし、この自動的に変更されたフォントの色は必ずしもすべてのappと組み合わせるわけではありません.例えば、私たちのappのテーマ色は少し薄くてなくした青ですが、システムが一致するstatus barのフォントの色は黒で、不快に見えますので、強制的に白に変更します.
View controller-based status bar appearance
のitemが追加され、TypeがBoolean、ValueがNO AppDelegate.m
のapplication:didFinishLaunchingWithOptions:
に追加する:[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
StatusBarを隠す
appが初めて開いたブートページなど、浸透型の設計を実現するためには、StatusBar全体を隠す必要がある場合があります.方法は次のとおりです.
View controller-based status bar appearance
のitemが追加され、TypeがBoolean、ValueがNO viewDidLoad
には、if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[self prefersStatusBarHidden];
[self setNeedsStatusBarAppearanceUpdate];
}
prefersStatusBarHidden
:-(BOOL)prefersStatusBarHidden {
return YES;
}
[UIApplication sharedApplication].statusBarHidden = NO;