根据属性值更改颜色

时间:2014-08-20 13:15:46

标签: ios objective-c uiview uicolor

我有一个自定义UIView,它是一个圆圈,我想根据属性的值更改圆的颜色。该值的范围为0到100,其中100应为红色,0应为黄色。有没有办法根据属性计算当前颜色?

弗朗兹

1 个答案:

答案 0 :(得分:1)

RGB红色是:

{ 1.0, 0.0, 0.0 }

和黄色是:

{ 1.0, 1.0, 0.0 }

所以我们可以看到它是需要从0到100的输入计算的绿色通道,但是当红色为100而黄色为0时,需要反转该范围。

所以(未经测试):

- (void)setCircleColor:(int)value
{
    if (value < 0)
        value = 0;
    else if (value > 100)
        value = 100;

    CGFloat green 1.0 - ((CGFloat)value / 100.0);
    UIColor *color = [UIColor colorWithRed:1.0
                                     green:green
                                      blue:0.0
                                     alpha:1.0];
    self.circle.color = color;
}

请注意,这假设该属性名为circleColor,并且您的圈子对象可从circle属性访问,并且其自身具有color属性。