2010-03-16 43 views
0

您希望在一秒內解決的事情將成爲一種終生冒險。這是其中一種情況:)UITextView在某些情況下拒絕更改其顏色

我想要做的只是更改我的UITextView中的一個文本顏色。到目前爲止,我嘗試:

UIColor *myColor = [UIColor colorWithHue:38 saturation:98 brightness:100 alpha:1.0]; 
[myTextView setTextColor:myColor]; 

OR

UIColor *myColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"colorImage.png"]]; 
[myTextView setTextColor:myColor]; 

似乎都做工精細的UILabels,但是失敗的UITextView元素。當我嘗試[UIColor colorWithHue ...我只會得到一種微紅的顏色,不管我選擇什麼樣的價值(除了黑色和白色的價值,它們的工作原理)。 colorWithPatternImage完全不會改變textColor。

奇怪是不是?我顯然必須錯過一些東西。非常感謝幫助。提前致謝。

回答

3

+colorWithHue:saturation:brightness:alpha:與其他UIColor方法一樣,取值爲0到1,而不是0到100.我不希望+colorWithPatternImage:可用於文本渲染,除非您想製作自己的基於Core Graphics的繪圖代碼。

3

正如Noah所說,數值預計在[0,1]的範圍內。試試這個,並根據需要進行修改:

UIColor *myColor = [UIColor colorWithHue:0.38 saturation:0.98 brightness:1.0 alpha:1.0]; 
[myTextView setTextColor:myColor]; 
+0

謝謝,這是有道理的。我會給它一點點,並報告回來 – Friendlydeveloper 2010-03-17 04:18:12

0

好吧,我設法讓它工作。感謝你的幫助。

如果有人遇到問題的色相值,以度爲單位。在XCode中使用它之前,先將它設計爲360。

1

如果你是用你的圖形程序的顏色數,並希望犧牲可讀性一點的效率,你可以做轉換的賦值語句一樣colorWithHue:(112/360.0)下方

UIColor *color1 = [UIColor colorWithHue:(112/360.0) saturation:.63 brightness:.73 alpha:1];//green 
    UIColor *color2 = [UIColor colorWithHue:(70/360.0) saturation:.79 brightness:.84 alpha:1];//lime 
    UIColor *color3 = [UIColor colorWithHue:(49/360.0) saturation:.77 brightness:.91 alpha:1];//yellow 

您可以將色相數字表示爲要從Fireworks色調,飽和度,亮度數字轉換爲UIColor 0-1比例的分數。這對於Fireworks使用360度刻度的Hue特別有用。 Fireworks中的飽和度,亮度和alpha值除以100,因此轉換非常簡單。在開發過程中,Hue分數彌補了我的圖形程序呈現色彩HSB的方式,以及Objective-C需要什麼。數字可以輕鬆調整。對於發佈版本,我可以用.54代替color1的112/360。

相關問題