UIGesture视图随手势移动
原理是获取手指在屏幕中的位置,上demo:
- (void)panHandle:(UIPanGestureRecognizer *)gesture
{
switch (gesture.state)
{
case UIGestureRecognizerStateBegan: {
_shimmeringView.frame = CGRectMake([gesture locationInView:self.view].x, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);
}
break;
case UIGestureRecognizerStateChanged: {
_shimmeringView.frame = CGRectMake([gesture locationInView:self.view].x, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);
}
break;
case UIGestureRecognizerStateEnded: {
if (_shimmeringView.frame.origin.x > self.view.frame.size.width/2){
[UIView animateWithDuration:0.3f animations:^{
_shimmeringView.frame = CGRectMake(self.view.frame.size.width, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);
} completion:^(BOOL finished) {
[self sleepDidEnd];
}];
} else {
[UIView animateWithDuration:0.3f animations:^{
_shimmeringView.frame = CGRectMake(0, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);
} completion:^(BOOL finished) {
}];
}
}
break;
case UIGestureRecognizerStateCancelled:
{
NSLog(@"====oh NO===滑动被取消了");
/*********************************************
* 不排除有,pan事件被中断的可能,处理同stateEnded *
*********************************************/
}
break;
default:
break;
}
}

浙公网安备 33010602011771号