質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

Q&A

解決済

2回答

3830閲覧

【iOS】NavigationBarやTabBarを使用している際のUIStatusBarの文字色の変更について

Kesth

総合スコア83

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

0グッド

0クリップ

投稿2015/08/01 09:26

初投稿です。
現在X code6.4を使いswiftでアプリを制作しています。
今回はstatu barの文字色の変更の仕方について質問させてください。

Status Barの文字色を白くしようと考えているのですが、View Controllerごとに変更する場合、

①info.plistでView controller-based status bar appearanceをYESに設定。
②status barの文字色を変更したいview controller上で以下を記載

swift

1override func preferredStatusBarStyle() -> UIStatusBarStyle { 2 return .LightContent 3 }

上記の方法で変更できると思っていたのですが、上記を試してもstatusbarの色は
デフォルトの黒のまま。

いろいろ調べてみると、アプリでNavigationBarやTabBarを使っている場合は
上記の方法では変更ができず、別の方法が必要とのことでした。
(現に、私のアプリでもNavigationBarとTabBarを使用しています)

別の方法につき調べているのですが、どうもうまく変更ができず困っています。

NavigationBarとTabBarを使っている場合の、View ControllerごとのStatusbarの設定方法を教えていただけますでしょうか?

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

viewDidLoad内で以下のように実行した上で、statusbarの変更関数を読み込んでいます。

Swift

1override func viewDidLoad() { 2 super.viewDidLoad() 3 self.setNeedsStatusBarAppearanceUpdate() 4} 5 6override func preferredStatusBarStyle() -> UIStatusBarStyle { 7 return .LightContent 8}

となるとUINavigationControllerがステータスバーの操縦を持っちゃってるのでUINavigationControllerに対して上記の処理を実行させる必要がありますね

一番手っ取り早いのはUINavigationControllerのサブクラスを用意してその中でステータスバーの更新処理を同じように実装してみると効果があるはずです

Swift

1class ほにゃららNavigationController: UINavigationController { 2 3 // init系については割愛 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 self.setNeedsStatusBarAppearanceUpdate() 8 } 9 10 override func preferredStatusBarStyle() -> UIStatusBarStyle { 11 return .LightContent 12 } 13}

Swift

1// 使ってるwindowにこんな感じでセットしてあげる 2self.window.rootViewController = ほにゃららNavigationController(rootViewController: viewController)

投稿2015/08/01 13:39

編集2015/08/01 13:45
__moai

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kesth

2015/08/01 16:04

教えていただいた方法をためしたところ、無事解決出来ました!! 丁寧に教えて頂き、本当にありがとうございました!
guest

0

setNeedsStatusBarAppearanceUpdate()はViewControllerクラス内で実行しましたか?
ステータスバーの変更を適用させるには上記の関数を呼び出す必要があります

投稿2015/08/01 09:46

__moai

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kesth

2015/08/01 10:48

コメントありがとうございます。 viewDidLoad内で以下のように実行した上で、statusbarの変更関数を読み込んでいます。 override func viewDidLoad() { super.viewDidLoad() self.setNeedsStatusBarAppearanceUpdate()    } override func preferredStatusBarStyle() -> UIStatusBarStyle { return .LightContent } 上記をやっているのですが、Navigation Bar上ではStatusbarの色は黒のままです。 ためしにNavigationBarに hidesBarsOnSwipe = true を行ったところ、 スワイプしてNavigationBarが隠れた段階でStatusBarが白くなりましたが、スワイプを戻してNavigationBar上にStatusbarが戻るとまた黒く戻ってしまいます。 こちらは何が原因なのでしょうか? 度々お手数おかけします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問