iOS 7 appの外観を変更(NavigationBar,TabBar,StatusBar)

4012 ワード

NavigationBar戻るボタンのアイコンを変更


この問題はこのいわゆる問題の中で私が最も時間をかけて解決したもので、初心者の私には本当に小さな穴です.先に行った回り道は、最初はUIVEewController(例えばMyViewController)を継承し、そのnavigationItemの属性leftBarButtonItemを設定することによって実現され、このボタンにクリックして戻る方法を実現しなければならない.このような欠点は次のとおりです.
  • UINavigationControllerに配置されているすべてのViewControllerは、このMyViewController
  • を継承します.
  • UINavigationControllerのスタックの底にあるViewControllerであれば、隠し戻りボタンの判定
  • を追加する必要がある.
  • MyViewControllerおよびそのサブクラスpushからiOSのオリジナルインタフェース、例えばUIImagePickerControllerが存在する場合、この戻るボタンは
  • に無効になります.
    しかし、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のフォントの色は黒で、不快に見えますので、強制的に白に変更します.
  • はまずInfo.plistのInformation Property Listには、KeyがView controller-based status bar appearanceのitemが追加され、TypeがBoolean、ValueがNO
  • となる
  • はその後、AppDelegate.mapplication:didFinishLaunchingWithOptions:に追加する:[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
  • StatusBarを隠す


    appが初めて開いたブートページなど、浸透型の設計を実現するためには、StatusBar全体を隠す必要がある場合があります.方法は次のとおりです.
  • はStatusBarの色を変えるのと同じようにInfo.plistのInformation Property Listには、KeyがView controller-based status bar appearanceのitemが追加され、TypeがBoolean、ValueがNO
  • となる
  • StatusBarを非表示にする必要があるViewControllerのviewDidLoadには、
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
         [self prefersStatusBarHidden];
         [self setNeedsStatusBarAppearanceUpdate];
     }
  • というコードが追加されています.
  • 書き換えprefersStatusBarHidden:
    -(BOOL)prefersStatusBarHidden {
     return YES;
    }
  • 注意:しかし、このように設定すると、このページからapp全体のStatusBarが非表示になります.再表示するには、他のViewControlに追加する必要があります.[UIApplication sharedApplication].statusBarHidden = NO;