我遇到一些與顏色匹配的問題。導航欄顏色問題
我問過類似這個問題,但我現在有同樣的問題。我已經設置透明度爲假,並轉換這個十六進制顏色的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