2013-10-16 33 views
4

我試圖通過爲其分配一個值來設置UITextViewtextColor如何從int中正確設置UIColor?

在節目早些時候,我有

textView.textColor = 0x000000; 

但後來,當我有

textView.textColor = 0x888888; 

一個致命的錯誤彈出說:「‘詮釋’的隱式轉換爲‘的UIColor *’是不允許使用ARC「。

如何將我的int轉換爲UIColor以正確設置文本顏色?爲什麼它使用0x000000而不是0x888888?

+1

檢查: - HTTP://計算器。com/questions/6207329/how-to-set-hex-color-code-for-background –

+0

0x000000是十六進制的,這是一個16位數的系統,但這也被認爲是零參考,它被視爲0或1如果引用存在或沒有,那麼textView.textColor = 0x000000;可能會是黑色的。 –

回答

11

爲您submited回答這個相提並論是不是答案UIColorFromRGB是上面定義的宏@implementation

#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]; 

然後你就可以像使用

textView.textColor = UIColorFromRGB(0x888888); 

你可以使用它的UIColor財產爲目的C設定文本BG-色等顏色

enter image description here

0

我想你可以使用UIColorFromRGB()將它轉換爲UIColor。

例如

textView.textColor = UIColorFromRGB(0x888888); 
1

使用,必須

textView.textColor = [UIColor colorWithRed:<#(CGFloat)#> green:<#(CGFloat)#> blue:<#(CGFloat)#> alpha:<#(CGFloat)#>]; 

嘗試:

- (UIColor *)UIColorFromRGB:(NSInteger)rgbValue { 
    return [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 
          green:((float)((rgbValue & 0xFF00) >> 8))/255.0 
          blue:((float)(rgbValue & 0xFF))/255.0 
          alpha:1.0]; 
} 

...

textView.textColor = [self UIColorFromRGB:0x888888]; 
0

你可以通過以下步驟完成此操作:

  1. 將十六進制值轉換爲RGB使用HexToRGB

  2. 然後做這個改變你的TextView的文本顏色:

    textview.textColor = [UIColor colorWithRed:244/255.00f 
        green:133/255.00f blue:116/255.00f alpha:1.0f]; // values are just an example 
    
5

斯威夫特版本

您可以使用下面的函數在RGB十六進制顏色Int轉換爲UIColor

func uiColorFromHex(rgbValue: Int) -> UIColor { 

    // & binary AND operator to zero out other color values 
    // >> bitwise right shift operator 
    // Divide by 0xFF because UIColor takes CGFloats between 0.0 and 1.0 

    let red = CGFloat((rgbValue & 0xFF0000) >> 16)/0xFF 
    let green = CGFloat((rgbValue & 0x00FF00) >> 8)/0xFF 
    let blue = CGFloat(rgbValue & 0x0000FF)/0xFF 
    let alpha = CGFloat(1.0) 

    return UIColor(red: red, green: green, blue: blue, alpha: alpha) 
} 

並且可以使用這樣

let myColorValue = 0x888888 
let color = uiColorFromHex(myColorValue)