はじめに
UIKitは学び始めたばかりなので間違っていたり、もっと良い方法がある可能性があります。
そのような場合はコメントか編集リクエストを送ってください。
やろうとしている事
こちらの画像をナビゲーションバーに表示して、
画像の背景と同じ色をナビゲーションバーに表示したい。
作業
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
}
}
あれ?なんで?
もしかしたらRBGサイトがおかしかったのかもしれません。
ビルド後のスクショでRGBを見てみましょう
ナビゲーションバーの色はrgb(110,206,32)
だそうです。
これおかしいのサイトじゃなくてナビゲーションバーじゃない?
もしかしてUIColor(red:, green:, blue:, alpha:)
がバグってる?
しかし、ナビゲーションバー以外では正常に表示されます。
じゃあナビゲーションバーがおかしいじゃんという事になります。
原因は?
これは推測ですが、
上の画像のようにナビゲーションバーにはデフォルトでグレーっぽい色がついています。
これの上に色を乗せているので指定した色と違う色が表示されているのではないでしょうか。
解決方法
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
}
}
おわり
これはバグなのか、仕様なのか
もしかしたらナビゲーションバーの色の変え方が適切ではない可能性??