2013-03-20 98 views
0

我添加了一个平移手势到包含数字的UILabel。当用户向上或向下平移时,我想让号码上下移动。我有这个工作正常 - 平移了24个坐标减少了24个等数字翻译平移手势坐标

我现在需要做的是让它的数量只增加20个坐标的间隔 - 所以,当坐标在50到70之间,数字增加50,当坐标在100到120之间时,数字增加100,等等。

我怎么能做到这一点不增加一个巨大的if/else树每一个案例?我确信有一个非常简单的方法来做到这一点,或许使用for循环,但我疲惫的大脑似乎无法绕开它。

回答

1

如何回合一些基本的数学和修剪掉的精度。

static NSInteger BasicNormalize(CGFloat input, CGFloat interval) 
{ 
    NSInteger units = (input + interval/2.f)/interval; 
    return units * interval; 
} 

通过添加一半的时间间隔开始您可以获得一些基本舍入。例如下降到0,11轮9轮高达20

+0

谢谢亲切。 – bmueller 2013-03-20 22:59:18

0

您可以正常化的价值。试试这个代码:

 CGPoint loc = [sender locationInView:self]; 

     int y = (int)loc.y/20; 
     y = y * 20; 
     myValue += y;