2016-09-11 23 views
1

私は現在、Xcode 8 betaのSwift 3で、iOS 10のアプリを開発中です。setStatusBarStyle:アニメーション:非推奨

達成したいのは、テーマを昼間テーマから夜景テーマに変更するために、実行時にビューコントローラ内のステータスバースタイルを変更することです。 APIリファレンスでhereと表示されているように、私が過去に別のアプリを開発していたときに使用していたメソッドが廃止されたことがわかりました。

ただし、preferredStatusBarStyleは、1つのビューコントローラ内で変更したいので、ここでは機能しません。

これを実行する他の方法は誰も想像できますか?事前に

EDIT

ありがとう:

明確にするためには、私は何をしたいビューコントローラは、画面上にすでにあるときに、スタイルを変更することです。

答えて

0

statusBarStyle変数を作成して、ステータスバーの外観を更新時に変更することができます。これが1つのコントローラーにしか影響しないようにするには、コントローラーが消えるか、または消えたときに効果を戻します。

var statusBarStyle: UIStatusBarStyle = .lightContent { 
    didSet { 
     setNeedsStatusBarAppearanceUpdate() 
    } 
} 

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return statusBarStyle 
} 

コントローラが表示される前に、上記の溶液は、前のコントローラのステータスバーのスタイルをオーバーライドします。あなたは、コントローラが表示されたときに、ステータスバーのスタイルを変更したい場合は、これを試してください:あなたのInfo.plistで

var statusBarStyle: UIStatusBarStyle? { 
    didSet { 
     setNeedsStatusBarAppearanceUpdate() 
    } 
} 

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return statusBarStyle ?? super.preferredStatusBarStyle 
} 

override func viewDidAppear(animated: Bool) { 

    super.viewDidAppear(animated) 

    statusBarStyle = .lightContent 
} 
+0

おかげで、私は変更されてやりたいものを:

UIApplication.shared.statusBarStyle = .lightContent 

が黒に戻るには:

次に、あなたのViewControllerであなたの夜をテーマに切り替えるときビューコントローラが既に提示された後のステータスバースタイル。それを達成する方法はありますか? –

+0

コントローラの 'viewDidAppear'メソッド内で' statusBarStyle'変数を変更します。 – Callam

+0

私はあなたが私の質問を少し誤解したと思います。ビューが既に画面に表示された後にスタイルを変更できるかどうかを尋ねています。たとえば、ステータスバーはデフォルトのスタイルになり、ボタンを押すとlightContentに変わります。助言がありますか? –

-1

を、偽の値でUIViewControllerBasedStatusBarAppearanceキーを追加します。あなたの助けのために

UIApplication.shared.statusBarStyle = .default