我需要創建一個CGColor形成HTML表示形式的字符串,例如[NSColor colorWithHTMLName:]只有CoreGraphics中的手段 但如何使用HTML表示形式的字符串創建CGColor
回答
嘗試是這樣的:
CGColorRef CGColorFromHTMLString(NSString *str)
{
// remove the leading "#" and add a "0x" prefix
str = [NSString stringWithFormat:@"0x%@", [str substringWithRange:NSMakeRange(1, str.length - 1)]];
NSScanner *scanner;
uint32_t result;
scanner = [NSScanner scannerWithString:str];
[scanner scanHexInt:&result];
CGColorRef color = CGColorCreateGenericRGB(((result >> 16) & 0xff)/255.0, ((result >> 8) & 0xff)/255.0, ((result >> 0) & 0xff)/255.0, 1.0);
return color;
}
不要忘記在使用後通過致電CGColorRelease
解決。
編輯:如果你不想使用基金會,嘗試CFStringRef或一個普通的C字符串:
CGColorRef CGColorFromHTMLString(const char *str)
{
uint32_t result;
sscanf(str + 1, "%x", &result);
CGColorRef color = CGColorCreateGenericRGB(((result >> 16) & 0xff)/255.0, ((result >> 8) & 0xff)/255.0, ((result >> 0) & 0xff)/255.0, 1.0);
return color;
}
謝謝你!從我+1,張貼純CoreGraphics解決方案作爲另一個答案 – deimus
沒問題。 (我只是熟悉文檔 - 在哪裏尋找這個和那個。) – 2012-06-10 17:57:57
等待 - 你不必使用基礎類。 CFStringRef與NSString橋接免費。看我的編輯。 – 2012-06-10 17:58:57
感謝H2CO3!
這裏是CoreGraphics在溶液,即沒有基礎類,但CoreGraphics中和C++
// Remove the preceding "#" symbol
if (backGroundColor.find("#") != string::npos) {
backGroundColor = backGroundColor.substr(1);
}
unsigned int decimalValue;
sscanf(backGroundColor.c_str(), "%x", &decimalValue);
printf("\nstring=%s, decimalValue=%u",backGroundColor.c_str(), decimalValue);
CGColorRef result = CGColorCreateGenericRGB(((decimalValue >> 16) & 0xff)/255.0, ((decimalValue >> 8) & 0xff)/255.0, ((decimalValue >> 0) & 0xff)/255.0, 1.0);
- 1. 用python文字創建對象的字符串表示形式
- 2. 如何使用字符串格式創建HTML報告
- 3. 如何爲類對象創建自定義字符串表示形式?
- 4. 如何使用字符串的字符創建列表?
- 5. FindOneByIdAs ObjectId的字符串表示形式
- 6. time_t的字符串表示形式?
- 7. time_t的C字符串表示形式
- 8. enum(estring)的字符串表示形式?
- 9. 如何創建一個字符串形式的python backtrace?
- 10. 如何將字符串的二進制表示形式轉換回字符串?
- 11. 如何使用JavaScript創建一個字符串的字符串?
- 12. 比較對象的字符串表示形式與列表中每個對象的字符串表示形式
- 13. 如何使用javascript獲取用戶時區的字符串表示形式?
- 14. 使用UTF-8填充的HTML字符串創建PDF表格
- 15. 創建完整的URL從網址欄的字符串表示形式
- 16. 如何獲取XmlType的字符串表示形式?
- 17. 如何在Python中解碼unicode字符串的表示形式?
- 18. 如何打印D中對象的字符串表示形式?
- 19. 如何在JSON中獲取PrimaryKeyRelatedField的字符串表示形式
- 20. 如何獲取類型的字符串表示形式?
- 21. 如何更改Python類的字符串表示形式?
- 22. 如何在Python3中獲取PyObject的字符串表示形式?
- 23. 如何獲取成員函數的字符串表示形式?
- 24. 如何留下浮動的字符串表示形式?
- 25. 如何添加十六進制的字符串表示形式?
- 26. 如何獲取十六進制的字符串表示形式?
- 27. 如何使用CefSharp從html字符串創建位圖?
- 28. 如何使用HTML字符串創建反應onClick
- 29. 如何將data.frame字符串表示形式轉換爲字符串變量
- 30. 如何創建字符串數組(使用字符串鍵)?
GIMME TEH CODEZ風格的問題是不被認爲是良好的。你有什麼嘗試? – 2012-06-10 17:31:55
http://stackoverflow.com/questions/3010216/how-can-i-convert-rgb-hex-string-into-uicolor-in-objective-c –