2013-03-20 99 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;