您的位置:首页 > 产品设计 > UI/UE

IOS开发——自定义手势(拖动UIPanGestureRecognizer)

2014-04-30 16:22 501 查看
                                              IOS开发——自定义手势(拖动UIPanGestureRecognizer)

代码下载地址:http://download.csdn.net/detail/u012881779/7277015

<span style="font-size:14px;">#import "HomePage.h"
@interface HomePage ()
@property (strong, nonatomic) UIScrollView *gBootSV;//底层适配SV
@property (nonatomic) float gColumnWidth;//栏目宽度
@property (nonatomic) float gFloat;//改变之前View的X坐标
@property (strong, nonatomic) UIPanGestureRecognizer* gPanRecognizer;//拖动手势

@end

@implementation HomePage
- (void)viewDidLoad
{
[super viewDidLoad];
self.gColumnWidth = 170;
//拖动手势
self.gPanRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(cPanHome:)];
[self.view addGestureRecognizer:self.gPanRecognizer];

}

//拖动手势
-(void)cPanHome:(UIPanGestureRecognizer *)rec{
//手势开始
if (rec.state == UIGestureRecognizerStateBegan) {
self.gFloat = self.view.frame.origin.x;
NSLog(@"dddd_%f",self.gFloat);
}
CGPoint point = [rec translationInView:self.view];
NSLog(@"fff_%f",point.x);
//限定范围
if((self.view.frame.origin.x < self.gColumnWidth&&self.view.frame.origin.x>-(320-self.gColumnWidth))||self.view.frame.origin.x == self.gColumnWidth||self.view.frame.origin.x==-(320-self.gColumnWidth)){
//手势进行
if (rec.state == UIGestureRecognizerStateChanged) {

if((point.x < self.gColumnWidth&&point.x>-(320-self.gColumnWidth))||point.x == self.gColumnWidth||point.x==-(320-self.gColumnWidth)){
[self.view setFrame:CGRectMake(self.gFloat+point.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];

if(self.view.frame.origin.x > self.gColumnWidth){
[self.view setFrame:CGRectMake(self.gColumnWidth, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];
}else if (self.view.frame.origin.x < -(320-self.gColumnWidth)){
[self.view setFrame:CGRectMake(-(320-self.gColumnWidth), self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];
}
}
}
//手势结束
if (rec.state == UIGestureRecognizerStateEnded) {
if(((self.view.frame.origin.x < self.gColumnWidth/2||self.view.frame.origin.x == self.gColumnWidth/2)&&self.view.frame.origin.x>0)||((self.view.frame.origin.x > -(320-self.gColumnWidth)/2||self.view.frame.origin.x == -(320-self.gColumnWidth)/2)&&self.view.frame.origin.x<0)){

[UIView animateWithDuration:0.2 animations:^{
[self.view setFrame:CGRectMake(0, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];
} completion:^(BOOL finished){
UIButton *tempBut = (UIButton *)[self.view viewWithTag:1000];
tempBut.selected = YES;
}];

}else{
if(self.view.frame.origin.x > self.gColumnWidth/2&&self.view.frame.origin.x<self.gColumnWidth){
[UIView animateWithDuration:0.2 animations:^{
[self.view setFrame:CGRectMake(self.gColumnWidth, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];
} completion:^(BOOL finished){}];
}else if(self.view.frame.origin.x < -(320-self.gColumnWidth)/2&&self.view.frame.origin.x>-(320-self.gColumnWidth)){
[UIView animateWithDuration:0.2 animations:^{
[self.view setFrame:CGRectMake(-(320-self.gColumnWidth), self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];
} completion:^(BOOL finished){}];
}
UIButton *tempBut = (UIButton *)[self.view viewWithTag:1000];
tempBut.selected = NO;
}
}
}
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐