2010-03-16 78 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。