質問するログイン新規登録
Swift

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

Q&A

解決済

1回答

2306閲覧

【SwiftUI】ステータスバーに色がつかない

KaoruYoshida

総合スコア37

Swift

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

0グッド

0クリップ

投稿2022/08/30 12:35

0

0

前提

NavigationLinkを使って画面遷移をするコードを書いています。
NavigationBarとステータスバーに色をつけようとしたのですが、ステータスバーについてはうまくいきません。
SafeAreaに関わるところが原因と考えたのですが、解決策が思いつきません。

実現したいこと

  • NavigationBarとステータスバー両方に色をつけたい

発生している問題

UINavigationBarとステータスバー両方に色をつけたいのですが、
このようにUINavigationBarのみにしか色がつかず、ステータスバーに色がつきません。

イメージ説明
ちなみにここでScrollViewを使用しているのですが、
Viewを下にスクロールするとなぜかステータスバーにも色がつくようになります。

該当のソースコード

背景色を設定している部分のコードです。

SwiftUI

1init(){ 2 UINavigationBar.appearance().barTintColor = UIColor.hex(string: "#9EE6BA", alpha: 1) //ここをコメントアウトすると、NavigationBarがスクロールで白になる 3 UINavigationBar.appearance().backgroundColor = UIColor.hex(string: "#9EE6BA", alpha: 1) //NavigatonBarの背景色 4 UINavigationBar.appearance().titleTextAttributes = [ .foregroundColor: UIColor.white] //NavigationTitleの色 5 UINavigationBar.appearance().tintColor = .white//「戻る」などの文字の色 6 } 7

お分かりになる方、回答よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

macOS バージョン12.3.1
2.6 GHz 6コアIntel Core i7
Xcodeバージョン13.3.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

新しいiOS(15から?)だとNavigationBarの設定方法が変わってしまっているみたいですね・・
検索してすぐにヒットするような方法は古いみたいで・・

参考リンクを調べてみたところ、次のような感じはいかがでしょうか。

swift

1 init() { 2 let appearance = UINavigationBarAppearance() 3 appearance.configureWithOpaqueBackground() 4 appearance.backgroundColor = UIColor.hex(string: "#9EE6BA", alpha: 1) 5 appearance.titleTextAttributes = [.foregroundColor: UIColor.white] 6 UINavigationBar.appearance().scrollEdgeAppearance = appearance 7 UINavigationBar.appearance().standardAppearance = appearance 8 }

barTintColorは多分不要になるのかなと思いました。
*区別する場合はscrollEdgeAppearanceとstandardAppearanceが関係してくるのでしょうか?(ちょっとまだわからないです・・)

tintColorはバーに追加したボタンなどにmodifierをつける感じになるのかなと思いました。

参考リンクです。

【Swift】iOS15の端末でNavigationBarが透明になって表示されない – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発
【iOS15.0】UINavigationBarが黒や透明になる問題の修正 | 木の向くままのエンジニア
barTintColor not working in iOS 15 | Apple Developer Forums
swift - iOS 15 Navigation Bar Transparent - Stack Overflow
xcode - SwiftUI iOS 15 how to change the color of navigation bar items - Stack Overflow
iOS 15 に対応する (Xcode 13.0)

NavigationView自体も非推奨になっているみたいですね・・

NavigationView | Apple Developer Documentation

投稿2022/08/31 03:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問