我遇到一些与颜色匹配的问题。导航栏颜色问题
我问过类似这个问题,但我现在有同样的问题。我已经设置透明度为假,并转换这个十六进制颜色的UIColor:
008A2E
的问题是,它仍然是不正确的,应该是什么(数字彩色计给人不同的值)。是否因为颜色被剪切,并且有解决方法吗?
感谢
我遇到一些与颜色匹配的问题。导航栏颜色问题
我问过类似这个问题,但我现在有同样的问题。我已经设置透明度为假,并转换这个十六进制颜色的UIColor:
的问题是,它仍然是不正确的,应该是什么(数字彩色计给人不同的值)。是否因为颜色被剪切,并且有解决方法吗?
感谢
我写到这里对这个问题的延伸,将其保存为迅速类,并导入您的项目。
import Foundation
import UIKit
extension UIColor {
convenience init(hex: Int, alpha: CGFloat = 1.0) {
let red = CGFloat((hex & 0xFF0000) >> 16)/255.0
let green = CGFloat((hex & 0xFF00) >> 8)/255.0
let blue = CGFloat((hex & 0xFF))/255.0
self.init(red:red, green:green, blue:blue, alpha:alpha)
}
convenience init(rgba: String) {
var red: CGFloat = 0.0
var green: CGFloat = 0.0
var blue: CGFloat = 0.0
var alpha: CGFloat = 1.0
if rgba.hasPrefix("#") {
let index = advance(rgba.startIndex, 1)
let hex = rgba.substringFromIndex(index)
let scanner = NSScanner(string: hex)
var hexValue: CUnsignedLongLong = 0
if scanner.scanHexLongLong(&hexValue) {
switch (count(hex)) {
case 3:
red = CGFloat((hexValue & 0xF00) >> 8) /15.0
green = CGFloat((hexValue & 0x0F0) >> 4) /15.0
blue = CGFloat(hexValue & 0x00F) /15.0
case 4:
red = CGFloat((hexValue & 0xF000) >> 12) /15.0
green = CGFloat((hexValue & 0x0F00) >> 8) /15.0
blue = CGFloat((hexValue & 0x00F0) >> 4) /15.0
alpha = CGFloat(hexValue & 0x000F) /15.0
case 6:
red = CGFloat((hexValue & 0xFF0000) >> 16) /255.0
green = CGFloat((hexValue & 0x00FF00) >> 8) /255.0
blue = CGFloat(hexValue & 0x0000FF) /255.0
case 8:
red = CGFloat((hexValue & 0xFF000000) >> 24)/255.0
green = CGFloat((hexValue & 0x00FF0000) >> 16)/255.0
blue = CGFloat((hexValue & 0x0000FF00) >> 8)/255.0
alpha = CGFloat(hexValue & 0x000000FF) /255.0
default:
print("Invalid RGB string, number of characters after '#' should be either 3, 4, 6 or 8")
}
} else {
println("Scan hex error")
}
} else {
print("Invalid RGB string, missing '#' as prefix")
}
self.init(red:red, green:green, blue:blue, alpha:alpha)
}
}
使用
navigationController.navigationBar.barTintColor = UIColor(hex: 0x008A2E, alpha: 1.0)
我确实尝试过,但它的颜色和以前一样。以前我使用的是一个十六进制的UIColor转换器,而不是你的方法,但他们给出了相同的结果。 – dwinnbrown
我在我的项目中使用了这个扩展,完美地工作 –
嗯奇怪的是,它给出了和以前相同的结果。 – dwinnbrown
管理HEX颜色,我发现在的UIColor构造直接利用的最佳途径。
你的这个:
self.navigationController.navigationBar.barTintColor = UIColor(red: 0x00/255, green: 0x8A/255, blue: 0x2E/255, alpha: 1.0)
我希望帮你。
我在使用这段代码:UINavigationBar.appearance()。barTintColor = UIColor(hex:0x008A2E,alpha:1.0) – dwinnbrown
如果您看到相同的颜色(008A2E)在您的显示器和设备上不同,则可以。这是因为屏幕技术。所以,如果你使用相同的颜色并不重要,在不同的屏幕上它会看起来不同。 – azimov
@gottlieb故事板上的颜色是它应该是的,但在模拟器中它看起来不像应该。已经尝试过重置模拟器。 – dwinnbrown
大声笑,我只是用你的颜色直接在故事板中设置背景颜色(使用“数字彩色仪”我得到了RGB等效:10,122,49)。在构建和运行后,我再测量一次,查看背景颜色,... RGB值为:16,122,35。我认为iOS和OS X使用的是不同的颜色系统,所以你很难获得正确的颜色,除非有人已经有相同的问题并以某种方式解决问题。 – azimov