0

我已向UILabel包含数字的 a 添加了平移手势。当用户向上或向下平移时,我希望数字向上/向下。我的工作正常 - 平移 24 个坐标将数字减少 24,等等。

我现在需要做的是使数字仅以 20 个坐标的间隔递增 - 因此,当坐标在 50 和 70 之间时,数字会增加 50,当坐标在 100 和 120 之间时, number 增加 100,依此类推。

if/else如果不为每个案例添加一棵巨大的树,我怎么能做到这一点?我确信有一种非常简单的方法可以做到这一点,也许使用for循环,但我疲惫的大脑似乎无法将它的头绕在它周围。

4

2 回答 2

1

一些基本的数学和修剪精度怎么样。

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

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

于 2013-03-20T15:34:19.107 回答
0

您可以标准化该值。试试这个代码:

        CGPoint loc = [sender locationInView:self];

        int y = (int)loc.y / 20;
        y = y * 20;
        myValue += y;
于 2013-03-20T15:34:32.267 回答