0
1

More than 1 year has passed since last update.

【UIKit】指定した色と違う色がNavigationBarに表示される

Posted at

はじめに

UIKitは学び始めたばかりなので間違っていたり、もっと良い方法がある可能性があります。
そのような場合はコメントか編集リクエストを送ってください。

やろうとしている事

こちらの画像をナビゲーションバーに表示して、
画像の背景と同じ色をナビゲーションバーに表示したい。
logo-background-color.png

作業

まず、画像の背景のRGBを調べます。
スクリーンショット 2022-07-09 18.35.55.png

rgb(85,197,0)でした。
このRGBをナビゲーションバーに設定します

import UIKit

class NavigationViewController: UINavigationController {
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationBar.barTintColor = UIColor(red: 85/255, green: 197/255, blue: 0/255, alpha: 1.0)
    }
}

続いて、ナビゲーションバーに画像を配置します。

import UIKit

class TabBarViewController: UITabBarController {
    var qiita: UIImageView = {
        let view = UIImageView(image: UIImage(named: "logo-background-color"))
        view.translatesAutoresizingMaskIntoConstraints = false
        view.contentMode = .scaleAspectFit
        return view
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationItem.titleView = qiita
    }
}

これで完成です
ビルドしてみましょう
Simulator Screen Shot - iPhone 12 - 2022-07-09 at 18.39.25.png

あれ?なんで?
もしかしたらRBGサイトがおかしかったのかもしれません。
ビルド後のスクショでRGBを見てみましょう

スクリーンショット 2022-07-09 18.43.26.png

ナビゲーションバーの色はrgb(110,206,32)だそうです。
これおかしいのサイトじゃなくてナビゲーションバーじゃない?
もしかしてUIColor(red:, green:, blue:, alpha:)がバグってる?

しかし、ナビゲーションバー以外では正常に表示されます。

じゃあナビゲーションバーがおかしいじゃんという事になります。

原因は?

Simulator Screen Shot - iPhone 12 - 2022-07-09 at 18.48.56.png
これは推測ですが、
上の画像のようにナビゲーションバーにはデフォルトでグレーっぽい色がついています。
これの上に色を乗せているので指定した色と違う色が表示されているのではないでしょうか。

解決方法

import UIKit

class NavigationViewController: UINavigationController {
    override func viewDidLoad() {
        super.viewDidLoad()

-       navigationBar.barTintColor = UIColor(red: 85/255, green: 197/255, blue: 0/255, alpha: 1.0)

+       let appearance = UINavigationBarAppearance()
+       appearance.backgroundColor = UIColor(red: 85/255, green: 197/255, blue: 0/255, alpha: 1.0)
+       UINavigationBar.appearance().standardAppearance = appearance
+       UINavigationBar.appearance().compactAppearance = appearance
+       UINavigationBar.appearance().scrollEdgeAppearance = appearance

    }
}

Simulator Screen Shot - iPhone 12 - 2022-07-09 at 18.55.04.png
このようになりました。
完璧ですね

おわり

これはバグなのか、仕様なのか
もしかしたらナビゲーションバーの色の変え方が適切ではない可能性??

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1