如何在进度更改时更改UIProgressView颜色

时间:2015-01-08 14:18:08

标签: ios uicolor uiprogressview

我希望在进度发生变化时更改我的UIProgressView进度颜色。所以基本上它开始变白并且在接近结束时变蓝。

这是我的代码:

-(void)changeSendProgProgress:(float)progress
{


    CGFloat redBlueValue = 255 - (255*progress);

    UIColor *colorProg = [UIColor colorWithRed:redBlueValue green:redBlueValue blue:255 alpha:1.0];

    [sendProgress setProgressTintColor:colorProg];
    [sendProgress setProgress:progress];


}

唯一的问题是进度颜色没有变化,它一直保持白色到最后。 为什么不改变? 我应该使用像dispatch_async这样的UIThreading(dispatch_get_main_queue()吗?

2 个答案:

答案 0 :(得分:1)

正如Ian MacDonald所说,[UIColor colorWithRed:green:blue:alpha:]的值从0.0到1.0

所以继承正确的代码:

-(void)changeSendProgProgress:(float)progress
{


    CGFloat redBlueValue = (255 - (255*progress)) /255.0;

    UIColor *colorProg = [UIColor colorWithRed:redBlueValue green:redBlueValue blue:1.0 alpha:1.0];

    [sendProgress setProgressTintColor:colorProg];
    [sendProgress setProgress:progress];


}

答案 1 :(得分:1)

在我看来,您实际上是在设置等于或小于255的整数值。关于Apple的文档,所有参数都应该在CGFloat类型中介于0.0到1.0之间。

请考虑此链接。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIColor_Class/index.html#//apple_ref/occ/clm/UIColor/colorWithRed:green:blue:alpha

希望这有帮助。