如何在进度更改时更改 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。
希望对您有所帮助。
我想在进度变化时更改我的 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。
希望对您有所帮助。