更改ios狀態列顏色

來源:互聯網
上載者:User

標籤:

更改狀態列顏色

將iOS狀態列預設顏色為黑色,但有時為了需求,我們需要更改狀態列的顏色,常用的方式有:

方法一:

  1.在info.plist添加View controller-based status bar appearance為NO;

  2.在頁面執行[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]。

  但是這種做法在ios9.0以前是完全沒有問題的,進入iOS9.0後,便會出現如下警告:

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE en

   為了消除這條警告:修改方式如下:

1.在info.plist刪掉這條也可以,或者將View controller-based status bar appearance設定為YES

2.在需要改變顏色的頁面增加:(非全域,需要在每個需要的Viewcontroller中加入)

-(UIStatusBarStyle)preferredStatusBarStyle    {        return UIStatusBarStyleLightContent;    } 

但是問題又來了,如果我們初始化一個UINavigationController或者UITabBarController作為RootViewcontroller,那麼在子viewController中設定的上訴解決方案就會失效,該怎麼辦呢?

為UINavigationController擴充一個category,在類別裡面實現如下方法,並通過UINavigationController調用該方法,那麼在viewController中就可以實現狀態列顏色的改變了。

-(UIViewController *)childViewControllerForStatusBarStyle{    return self.topViewController;}

在狀態列發生改變時需要調用這個方法:

[self setNeedsStatusBarAppearanceUpdate];

設定狀態列的動畫效果:

-(UIStatusBarAnimation)preferredStatusBarUpdateAnimation{   //    return UIStatusBarAnimationFade;    return UIStatusBarAnimationSlide;}

 

隱藏狀態列:

如果不設定UINavigationController等,有兩種方式隱藏狀態列

方法一:

    1.將info.plist添加View controller-based status bar appearance為NO;

    2.將info.plist添加Status bar is initially hidden為 YES。

方法二:(非全域)

-(BOOL)prefersStatusBarHidden{    return YES;}

如果初始化一個UINavigationController或者UITabBarController作為RootViewcontroller,那麼第二種方法就失效了,解決辦法同更改狀態列顏色。

 

在某一個介面中隱藏狀態列的方法:

1.在 info.plist添加View controller-based status bar appearance為NO;

2.在需要隱藏的頁面:

頁面將要出現時:

-(void)viewWillAppear:(BOOL)animated{    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];  }

在頁面消失的地方:

-(void)viewWillDisappear:(BOOL)animated{    [[UIApplication sharedApplication] setStatusBarHidden:No withAnimation:UIStatusBarAnimationFade];}

 

 

更改ios狀態列顏色

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.