2016-07-11 13 views
0

iOS 9で2ページでUIScrollViewを使用しています。最初のページでステータスバーのテキストを黒にし、2ページ目を白くします。だから私は2番目のページにスライドするとき、私は最初のページにスライドすると、ステータスバーの色を白と黒に変えたい。同じビューコントローラ内でプログラムでステータスバーのテキストの色を変更します

私はplistファイル falseに UIViewControllerBasedStatusBarAppearanceを設定しようとしたし、その後、プログラムの呼び出している:

UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackTranslucent; 
SetNeedsStatusBarAppearanceUpdate(); 

しかし、運なしで、ステータスバーのテキストが白表示され、UIApplication.SharedApplicationを呼び出した場合でも、それは白いままです。 StatusBarStyle = UIStatusBarStyle.BlackTranslucent;

同じビューコントローラ内でステータスバーのテキストの色を手動で変更するにはどうすればよいですか?

答えて

2

あなたのビューコントローラのナビゲーションコントローラを使用している場合は、プロパティを変更してみてください:

NavigationController.NavigationBar.BarStyle 

「Default」を白でなければなりません黒と「LightContent」でなければなりません。私は、ブラックオプションは非難されると信じています。

それ以外の場合は、Info.plistでView Controllerベースのステータスバースタイルを選択し、前述のhereのようにpreferredStatusBarStyle propertyを使用できます。あなたのviewDidLoadメソッドで

、次のメソッドを追加SetNeedsStatusBarAppearanceUpdate();

の操作を行います。

public override UIStatusBarStyle PreferredStatusBarStyle() 
{ 
     return UIStatusBarStyle.LightContent; //Or Default/Black/etc. 
} 

を注:ステータスバーのスタイルを変更するにはUIApplication.SharedApplicationを使用してではなく、iOSの9.に上記の方法を推奨されていません。これが助けてくれたらと思っています。乾杯!

+0

これはうまくいきましたが、私はBlackTranslucentの代わりにUIStatusBarStyle.Defaultを黒色に使用しなければなりませんでした。しかし、アニメーションは何らかの理由で動作していません。 UIStatusBarAnimation PreferredStatusBarUpdateAnimationをUIStatusBarAnimation.Fadeに設定しましたが、動作しません。 – doorman

+0

私はあなたが言及した "デフォルト" ==黒の問題で質問を更新しました。 :)アニメーションの問題を調べて、何かを見つけたら報告します。 –

+1

よかった、ありがとう。アニメーションの部分に関して、私はコマンド・アニメーションに次のように更新コマンドをラップする必要がありました。UIView.Animate(0.3f、0、UIViewAnimationOptions.CurveEaseOut、SetNeedsStatusBarAppearanceUpdate、()=> {}); – doorman

3
Go to your application Plist and add this as new row & set it as NO. 

    View controller-based status bar appearance NO 

Add a bool to determine state of UIStatusBar colour & add a Toggle method 

@property(nonatomic) BOOL black; 


-(void)toggleStatuSBar:(id)sender{ 

    if(black) { 
     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; 
     black = NO; 

    }else { 
     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES]; 
     black = YES; 
    } 
} 
関連する問題