拖動(dòng)手勢(shì)創(chuàng)建
UIPanGestureRecognizer * panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panMoveGesture:)];
[topPaperView addGestureRecognizer:panGesture];
拖動(dòng)事件(以下示例為上下拖動(dòng)食绿,上下左右拖動(dòng)及滑行見注釋部分)
//拖動(dòng)手勢(shì)
-(void)panMoveGesture:(UIPanGestureRecognizer *)recognizer
{
if (_isResponseGesture == NO) {
return;
}
//視圖前置操作
[recognizer.view.superview bringSubviewToFront:recognizer.view];
CGPoint center = recognizer.view.center;
CGFloat cornerRadius = recognizer.view.frame.size.width/2;
CGPoint translation = [recognizer translationInView:self.view];
// recognizer.view.center = CGPointMake(center.x+translation.x, center.y+translation.y);(上下左右滑動(dòng))-------
//限制上下滑動(dòng)的最大和最小距離(限制只能上下滑動(dòng))
if (center.y+translation.y-20>Main_Screen_Height/3*2)
{
recognizer.view.center = CGPointMake(center.x, Main_Screen_Height/3*2+20);
}
else if (center.y+translation.y-20<Main_Screen_Height/3)
{
recognizer.view.center = CGPointMake(center.x, Main_Screen_Height/3);
}
else
{
recognizer.view.center = CGPointMake(center.x, center.y+translation.y);
}
[recognizer setTranslation:CGPointZero inView:recognizer.view.superview];
//下面注釋內(nèi)容為滑行設(shè)置
// if (recognizer.state == UIGestureRecognizerStateEnded) {
// //計(jì)算速度向量的長度适肠,當(dāng)他小于200時(shí),滑行會(huì)很短
// CGPoint velocity = [recognizer velocityInView:recognizer.view.superview];
// CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y));
// CGFloat slideMult = magnitude / 200;
//// NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult); //e.g. 397.973175, slideMult: 1.989866
//
// //基于速度和速度因素計(jì)算一個(gè)終點(diǎn)
// float slideFactor = 0.1 * slideMult;
// CGPoint finalPoint = CGPointMake(center.x + (velocity.x * slideFactor), center.y + (velocity.y * slideFactor));
// //限制最小[cornerRadius] 和最大邊界值 [self.view.bounds.size,width - cornerRadius],以免拖動(dòng)出屏幕界限
// finalPoint.x = MIN(MAX(finalPoint.x, cornerRadius), Main_Screen_Width - cornerRadius);
// finalPoint.y = MIN(MAX(finalPoint.y, cornerRadius), Main_Screen_Height - cornerRadius);
//
// //使用UIView動(dòng)畫 使view滑行到終點(diǎn)
// [UIView animateWithDuration:slideFactor * 2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
// recognizer.view.center = finalPoint;
// } completion:nil];
//
// }
//根據(jù)view拖動(dòng)位置身堡,修改其他view的相關(guān)信息
_pullTopY = recognizer.view.center.y-20;
paperCV.frame = CGRectMake(0, 64, Main_Screen_Width, Main_Screen_Height-114);
layout.sectionInset = UIEdgeInsetsMake(_pullTopY-64+40, 0, 0, 0);
layout.itemSize = CGSizeMake(Main_Screen_Width, Main_Screen_Height-50-_pullTopY-40);
// [self setPullTopY:recognizer.view.center.y-20];
}