我有一个小问题。我有一些 UIView,我可以使用 touchesBegan 和 touchesMoved 方法来拖动它们。
我的问题是我的 UIView 的坐标 (0,0) 在我的手指下。我想避免这种情况。
你知道怎么做吗。我尝试了一些事情但没有成功:(
非常感谢 !
我有一个小问题。我有一些 UIView,我可以使用 touchesBegan 和 touchesMoved 方法来拖动它们。
我的问题是我的 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;
}