UITextView拒绝改变它的颜色

时间:2010-03-16 21:42:34

标签: iphone uitextview uicolor

在某些情况下,你希望在一秒内解决的事情变成一生的冒险。这是其中一种情况:)

我想做的只是改变我的一个UITextViews的文字颜色。到目前为止我试过了:

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。

奇怪不是吗?我显然必须遗漏一些东西。非常感谢帮助。提前谢谢。

4 个答案:

答案 0 :(得分:3)

+colorWithHue:saturation:brightness:alpha:与其他UIColor方法一样,取值从0到1,而不是0到100.我不希望+colorWithPatternImage:完全使用文本呈现,除非你感觉就像制作自己的基于Core Graphics的绘图代码一样。

答案 1 :(得分:3)

正如诺亚所说,预计价值将在[0,1]的范围内。请尝试此操作并根据需要进行修改:

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

答案 2 :(得分: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

您可以将Hue数字表示为分数,以将Fireworks Hue,Saturation,Brightness数字转换为UIColor的0-1比例。它对Hue特别有用,Fireworks使用360度。在Fireworks中,饱和度,亮度和alpha除以100,因此转换很简单。在开发过程中,Hue分数桥接了我的图形程序呈现彩色HSB的方式,以及Objective-C所需的内容。这些数字可以轻松调整。对于发布版本,我可以用.54代替color1的112/360。

答案 3 :(得分:0)

好的,我设法让它发挥作用。谢谢你的帮助。

如果有人遇到色调值问题,以度为单位。在XCode中使用之前,请将其缩小360。