0

UILabel数字を含むにパンジェスチャを追加しました。ユーザーがパンアップまたはパンダウンするとき、番号を上下させたいです。私はこれをうまく機能させています-24座標をパンすると、数が24減少します。

ここで行う必要があるのは、20座標の間隔でのみ数値がインクリメントされるようにすることです。つまり、座標が50〜70の場合、数値は50ずつインクリメントされ、座標が100〜120の場合、数値は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 に答える