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

How to change UIProgressView color while Progress Changes

我想在进度变化时更改我的 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(dispatch_get_main_queue() 这样的 UIThreading 吗?

正如 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];


}

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

请考虑这个link。

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

希望对您有所帮助。