2013-05-21 89 views
0

我正在從網上下載十六進制顏色,當我嘗試將其轉換爲RGB時,它不起作用。由於int表示,無法將十六進制顏色轉換爲rgb

我使用這個功能:

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 

我認爲這個問題是,當我得到的值從互聯網上(例如000),當我將其轉換爲int,所以我可以把它作爲參數傳遞給函數在上面,int表示爲0,所以函數無法識別顏色。同樣的事情,例如090時,它在90的整數。

+0

這對我有用。 http://code.wrightscs.com/?p=65你只是給函數十六進制代碼 – Radu

+0

謝謝。完美的作品。 – user1832330

回答

0

你需要把十六進制顏色看作一個字符串,並分別處理每個組件。

顏色#3B9有數字 「3」, 「B」 和 「9」

然而,看着here你會看到,3位表示,字符一倍。

因此,在這種情況下,顏色實際上是#33BB99: 紅色= 3 * 16 + 3 = 51 綠色= 11 * 16 + 11 = 187 藍色= 8 * 16 + 8 = 136 阿爾法= 255

所以顏色 '#3B9' 將變爲: [51/255.0,187/255.0 136/255.0,1.0]

因此應首先確定該字符串是否以壓縮方式表示顏色和複製數字如有必要。然後將這些數字對轉換爲它們的十進制值,然後轉換爲UIColor。

希望有幫助,我希望我的計算是正確的。我對Objective-C不太好,所以我不會提供代碼,但它應該很容易編寫自己的函數,儘管我敢打賭,函數已經存在於某個地方。

相關問題