我有点问题。 我有一些UIView,我可以使用touchesBegan和touchesMoved方法拖动它们。
我的问题是我的UIView的坐标(0,0)正在我手指下。我想避免这种情况。
你知道怎么做吗?我尝试了一些但没有成功的事情:(
非常感谢!
答案 0 :(得分:1)
这取决于视图的大小,但您可以将center
属性设置为触摸的位置。
将中心设置为点击位置
[UIView animateWithDuration:0.25f
delay:0.0f
options:(UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut)
animations:^{
theView.center = tapLocation;
}
completion:NULL]
您可以使用所有touches*
方法将视图设置为当前触摸的动画,而不仅仅是移动位置或翻译它。
答案 1 :(得分:0)
按下手指时保存点
然后测量拖动的速度,并将速度应用到视图的位置(我用我的例子中的原点翻译我的视图)
-(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;
}