我希望在进度发生变化时更改我的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()吗?
答案 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之间。
请考虑此链接。
希望这有帮助。