web-dev-qa-db-ja.com

タブバーの色を変更する(Swift)

Swiftを使用してXCodeのViewControllerでタブバーの色を変更しようとしています。 RGB値に一致させた16進があり、このコードでそれを設定しようとしています。 (これは機能しません)

let color = UIColor(red: 41, green: 40, blue: 39, alpha: 1.0)
UITabBar.appearance().barTintColor = color

ただし、このコードは次のことを行います。

UITabBar.appearance().barTintColor = UIColor.whiteColor()

なぜこれが機能しないのか、そしてそれを修正するために私ができることを誰かが説明できますか?

15
Jordan

すべてのRGBコンポーネントがチャネルごとに使用可能な最大値である1より大きいため、機能しません。あなたはおそらくカラーチャンネルをバイトとして考えているでしょうが、それはさまざまなカラービット深度にスケーリングしません。 (たとえば、iOSの初期バージョンではRGBA8888ではなくRGB565にレンダリングするのが一般的でした。そして、近い将来、Appleが16ビット精度の画面を標準にすることを期待できます。 。)ビット深度を色表現から切り離すために、0から1までのフロートが使用されます。

https://developer.Apple.com/Library/ios/documentation/UIKit/Reference/UIColor_Class/index.html#//Apple_ref/occ/instm/UIColor/initWithRed:green:blue:alpha

5
Jessy

RGB値を使用するには、RGB値を255.0で除算するだけです。これにより、0から1までの浮動小数点値が生成されます。

let color = UIColor(red: 41.0/255.0, green: 40.0/255.0, blue: 39.0/255.0, alpha: 1.0)
13
Ron Fessler

iOS 10 Swift 3.0

Swiftフレームワークを使用してもかまわない場合は、 INeraida でタブバーの背景をUIColorまたはHexColorまたはUIImageに変更し、完全な前景色を変更します。

UITabBarの場合

neraida.tabbar.background.color.uiColor(UIColor.orange, isTranslucent: false, viewController: self)

//change tab bar tint color //(select,unselect)

neraida.tabbar.foreground.color.uiColor((UIColor.white,UIColor.green), viewController: self)

//set Background Image for tab bar

neraida.tabbar.background.image("background", isTranslucent: false, viewController: self)
0
user7304558