我有一個小問題。 我有一些UIView,我可以用方法touchesBegan和touchesMoved拖動它們。相對於手指拖動UIVIew
我的問題是我的UIView的座標(0,0)正在我的手指下。我想避免這種情況。
你知道該怎麼做。我嘗試一些東西,但沒有成功:(
非常感謝!
我有一個小問題。 我有一些UIView,我可以用方法touchesBegan和touchesMoved拖動它們。相對於手指拖動UIVIew
我的問題是我的UIView的座標(0,0)正在我的手指下。我想避免這種情況。
你知道該怎麼做。我嘗試一些東西,但沒有成功:(
非常感謝!
這將取決於該視圖的大小,但你也許可以設置center
屬性爲您的觸摸位置。
動畫效果只是移動位置或轉換它的中心,你的抽頭位置
[UIView animateWithDuration:0.25f
delay:0.0f
options:(UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut)
animations:^{
theView.center = tapLocation;
}
completion:NULL]
相反,你可以認爲動畫到您當前的觸摸中的所有touches*
種方法。
當你按下你的手指保存點
然後測量拖動的速度,並應用速度到您的視圖的位置(我在我爲例翻譯我的原產視圖)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSUInteger touchCount = [touches count];
NSUInteger tapCount = [[touches anyObject] tapCount];
NSLog(@"touchesBegan");
NSLog(@"%d touches", touchCount);
NSLog(@"%d taps", tapCount);
UITouch *touch = [touches anyObject];
pNow = [touch locationInView:self];
pLast = [touch locationInView:self];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSUInteger touchCount = [touches count];
NSUInteger tapCount = [[touches anyObject] tapCount];
NSLog(@"touchesMoved");
NSLog(@"%d touches", touchCount);
NSLog(@"%d taps", tapCount);
UITouch *touch = [touches anyObject];
pNow = [touch locationInView:self];
mouseSpeed.x = pNow.x - pLast.x;
mouseSpeed.y = pNow.y - pLast.y;
NSLog(@"mouseSpeed : %f, %f", mouseSpeed.x, mouseSpeed.y);
origin.x += mouseSpeed.x;
origin.y += mouseSpeed.y;
NSLog(@"origin : %f, %f", origin.x, origin.y);
//copy point for the next update
pLast = pNow;
}
這會造成「跳躍」的效果。我希望看到的是我第一次用膠帶粘貼的位置。 – Pierre
哦,所以你想動畫到你的位置? –
難道你不能簡單地計算初始觸摸和中心之間的差異,並從touchesMoved值減去它? – Jake