我基本上讓用戶在UITextField中輸入一個十六進制值並將其寫入一個字符串以用於顏色選擇(教育目的)。我如何將字符串轉換爲十六進制?在iOS中將字符串轉換爲十六進制?
1
A
回答
1
我不知道這是什麼ü希望在您的方案......看看這是有用的或不..
調用第一種方法通過將十六進制串,作爲回報,你也會得到UIColor
。
- (UIColor *) colorWithHexString:(NSString *)hexString {
NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString];
CGFloat alpha, red, blue, green;
alpha = 1.0f;
red = [self colorComponentFrom: colorString start: 0 length: 2];
green = [self colorComponentFrom: colorString start: 2 length: 2];
blue = [self colorComponentFrom: colorString start: 4 length: 2];
return [UIColor colorWithRed: red green: green blue: blue alpha: alpha];
}
- (CGFloat) colorComponentFrom:(NSString *)string start:(NSUInteger)start length:(NSUInteger)length {
NSString *substring = [string substringWithRange: NSMakeRange(start, length)];
NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring];
unsigned hexComponent;
[[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent];
return hexComponent/255.0;
}
+0
我需要爲此導入特定標題嗎? –
+0
無需導入任何東西 –
+0
它在colorComponentFrom上吐出錯誤,但現在可以解決此問題。謝謝你的回答,我會標記它 –
0
你好這裏是很好的例子:
+ (UIColor *) colorFromHexString:(NSString *)hexString {
NSString *cleanString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""];
if([cleanString length] == 3) {
NSString *red = [cleanString substringWithRange:NSMakeRange(0, 1)];
NSString *green = [cleanString substringWithRange:NSMakeRange(1, 1)];
NSString *blue = [cleanString substringWithRange:NSMakeRange(2, 1)];
cleanString = [NSString stringWithFormat:@"ff%[email protected]%[email protected]%[email protected]%[email protected]%[email protected]%[email protected]", red, green, blue];
}else if([cleanString length] == 6) {
cleanString = [@"ff" stringByAppendingString:cleanString];
}else{
//do nothing
}
NSLog(@"%@", cleanString);
unsigned int rgba;
[[NSScanner scannerWithString:cleanString] scanHexInt:&rgba];
CGFloat alpha = ((rgba & 0xFF000000) >> 24)/255.0f;
CGFloat red = ((rgba & 0x00FF0000) >> 16)/255.0f;
CGFloat green = ((rgba & 0x0000FF00) >> 8)/255.0f;
CGFloat blue = (rgba & 0x000000FF)/255.0f;
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
還可以看到它在我的博客hrupin.com
相關問題
- 1. 將字符串轉換爲十六進制到十六進制
- 2. PHP將字符串轉換爲十六進制和十六進制字符串
- 3. 字符串爲十六進制和十六進制轉換爲字符串
- 4. 如何將十六進制字符串轉換爲十進制?
- 5. 將十六進制字符串轉換爲十進制
- 6. 將字符串十進制轉換爲十六進制數
- 7. 如何將十六進制字符串轉換爲十六進制字節?
- 8. 將字符轉換爲十六進制
- 9. 將ASCII字符轉換爲十六進制轉義字符串
- 10. 將十六進制字符串轉換爲字符串
- 11. 將字符串轉換爲十六進制字符串
- 12. Swift3將字符串值轉換爲十六進制字符串
- 13. 轉換十六進制字符串十六進制值
- 14. 將十六進制字符串轉換爲無符號字符[]
- 15. 將十六進制字符串轉換爲十六進制數據
- 16. 如何將十六進制字符串轉換爲十六進制數
- 17. 如何將十六進制字符串轉換爲十六進制?
- 18. 將十六進制字符串數組轉換爲十六進制數組
- 19. 如何將十六進制字符串轉換爲十六進制?
- 20. 從十六進制字符串轉換爲十六進制字符數組
- 21. 爲十六進制值轉換爲十六進制字符串在Perl
- 22. 將十六進制字符串轉換爲二進制
- 23. 將二進制長字符串轉換爲十六進制c#
- 24. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 25. 將十六進制轉換爲字符串在sql中
- 26. 在C中將十六進制轉換爲字符串?
- 27. 在Java中將十六進制字符串轉換爲ASCII碼
- 28. 在JavaScript中將整數轉換爲十六進制字符串
- 29. 如何在VB.NET中將字符串轉換爲十六進制?
- 30. 在Groovy中將整數轉換爲十六進制字符串
你所說的 「將其轉換爲十六進制」 意思?就像你提到的那樣,它不是十六進制的嗎?所有這些與Xcode有什麼關係? – 2013-06-12 07:53:37
http://stackoverflow.com/questions/3056757/how-to-convert-an-nsstring-to-hex-values看到這個鏈接... – Jitendra
我沒有得到你的問題..首先你接受來自用戶的十六進制值...並在最後u再次希望它只在十六進制格式...然後使用用戶輸入的值只... ...! –