所以我正在制作一个自定义滑块,我很接近这个,但似乎无法弄清楚如何让它绕到最近的5.有人可以帮我解决这个问题吗? / p>
int distance = progress;
roundedValue = roundf(distance / 5.0f) * 5.0f;
int distanceInt = (int) roundedValue;
return [NSString stringWithFormat:@"%i", distanceInt];
提前致谢!
答案 0 :(得分:1)
我尝试过这种方式,只不过是你,它给了我你想要的东西。
-(NSString *)test:(NSInteger)progress{
NSInteger distance = progress;
float roundedValue = roundf(distance / 5.0f) * 5.0f;
int distanceInt = (int) roundedValue;
return [NSString stringWithFormat:@"%i", distanceInt];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
for (NSInteger i=0; i<100; i+=4) {
NSLog(@"%ld -> %@",i, [self test:i]);
}
}
输出:
0 -> 0 4 -> 5 8 -> 10 12 -> 10 16 -> 15 20 -> 20 24 -> 25 28 -> 30 32 -> 30 36 -> 35 40 -> 40 44 -> 45 48 -> 50 etc
答案 1 :(得分:0)
现在的老问题,传递过来,CodaFi的评论响了。对于任何其他路人,请考虑:
int distanceInt = (distance / 5) * 5; // largest multiple of 5 <= distance
if ( (distance - distanceInt) >= 3 )
distanceInt += 1; // if remainder >= 3 round up
不需要浮动点。