我添加了一个平移手势到包含数字的UILabel
。当用户向上或向下平移时,我想让号码上下移动。我有这个工作正常 - 平移了24个坐标减少了24个等数字翻译平移手势坐标
我现在需要做的是让它的数量只增加20个坐标的间隔 - 所以,当坐标在50到70之间,数字增加50,当坐标在100到120之间时,数字增加100,等等。
我怎么能做到这一点不增加一个巨大的if/else
树每一个案例?我确信有一个非常简单的方法来做到这一点,或许使用for
循环,但我疲惫的大脑似乎无法绕开它。
我添加了一个平移手势到包含数字的UILabel
。当用户向上或向下平移时,我想让号码上下移动。我有这个工作正常 - 平移了24个坐标减少了24个等数字翻译平移手势坐标
我现在需要做的是让它的数量只增加20个坐标的间隔 - 所以,当坐标在50到70之间,数字增加50,当坐标在100到120之间时,数字增加100,等等。
我怎么能做到这一点不增加一个巨大的if/else
树每一个案例?我确信有一个非常简单的方法来做到这一点,或许使用for
循环,但我疲惫的大脑似乎无法绕开它。
如何回合一些基本的数学和修剪掉的精度。
static NSInteger BasicNormalize(CGFloat input, CGFloat interval)
{
NSInteger units = (input + interval/2.f)/interval;
return units * interval;
}
通过添加一半的时间间隔开始您可以获得一些基本舍入。例如下降到0,11轮9轮高达20
您可以正常化的价值。试试这个代码:
CGPoint loc = [sender locationInView:self];
int y = (int)loc.y/20;
y = y * 20;
myValue += y;
谢谢亲切。 – bmueller 2013-03-20 22:59:18