2013-06-12 32 views
1

我基本上讓用戶在UITextField中輸入一個十六進制值並將其寫入一個字符串以用於顏色選擇(教育目的)。我如何將字符串轉換爲十六進制?在iOS中將字符串轉換爲十六進制?

+0

你所說的 「將其轉換爲十六進制」 意思?就像你提到的那樣,它不是十六進制的嗎?所有這些與Xcode有什麼關係? – 2013-06-12 07:53:37

+0

http://stackoverflow.com/questions/3056757/how-to-convert-an-nsstring-to-hex-values看到這個鏈接... – Jitendra

+0

我沒有得到你的問題..首先你接受來自用戶的十六進制值...並在最後u再次希望它只在十六進制格式...然後使用用戶輸入的值只... ...! –

回答

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

相關問題