0

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

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

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

或者

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

两者似乎都适用于 UILabel,但不适用于 UITextView 元素。当我尝试 [UIColor colorWithHue...] 时,无论我选择什么值(黑色和白色的值除外。它们都有效),我只会得到一种略带红色的颜色。colorWithPatternImage 根本不会改变 textColor。

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

4

4 回答 4

3

正如诺亚所说,值预计在 [0, 1] 范围内。试试这个,并根据需要进行修改:

UIColor *myColor = [UIColor colorWithHue:0.38 saturation:0.98 brightness:1.0 alpha:1.0];
[myTextView setTextColor:myColor];
于 2010-03-16T23:39:26.780 回答
3

+colorWithHue:saturation:brightness:alpha:,与其他UIColor方法一样,取值从 0 到 1,而不是 0 到 100。我根本不希望+colorWithPatternImage:使用文本渲染,除非您想制作自己的基于 Core Graphics 的绘图代码。

于 2010-03-16T21:48:18.323 回答
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 比例。它对 Hue 尤其有用,Fireworks 使用 360 度刻度。Fireworks 中饱和度、亮度和 alpha 除以 100,因此转换很简单。在开发过程中,色调分数连接了我的图形程序呈现颜色 HSB 的方式,以及 Objective-C 的要求。这些数字可以很容易地调整。对于发布版本,我可以用 0.54 代替 color1 的 112/360。

于 2011-07-28T00:03:15.227 回答
0

好的,我设法让它工作。感谢你的帮助。

以防有人遇到色调值问题,以度为单位。在 XCode 中使用之前将其除以 360。

于 2010-03-18T13:40:21.567 回答