我添加了一個平移手勢到包含數字的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