我正在尝试编程车速表!我有一个针图像,我希望针根据当前的下载速度旋转。
我有以下方法,但它不起作用。当我用CurrentDegress更新我的针时,它永远不会下降,只会越来越高;针绕着圆圈旋转......任何人?!
- (void) recalculateDegrees:(CGFloat) currentlyLoadedBytes
{
if(bytes <= 0){
currentDegrees = 0;
}
else if (bytes > completeFileSize){
currentDegrees = MAX_DEGREES;
}
else {
CGFloat log_tmp =(CGFloat) log10f(currentlyLoadedBytes / 1000);
currentDegrees = (log_tmp/5.0f)*290.0f;
}
//code to rotate image to currentDegrees
}
答案 0 :(得分:1)
您可以使用以下方法从速度值(而不是currentlyLoadedBytes
)获取角度:
- (CGFloat)angleFromSpeed:(CGFloat)speed
{
if (speed <= 0) {
return MIN_ANGLE;
} else if (speed >= MAX_SPEED) {
return MAX_ANGLE;
} else {
return speed / MAX_SPEED * (MAX_ANGLE - MIN_ANGLE) + MIN_ANGLE;
}
}
答案 1 :(得分:0)
我没有完全遵循您正在做的事情,但是在else
区块的某处,您应该将currentlyLoadedBytes / completeFileSize
分开。此外,bytes
应该是cuurentlyLoadedBytes
吗?