//初期化侧滑的view
self.leftView = [[UIView alloc]initWithFrame:CGRectMake(DEVICE_WIDTH, 0, DEVICE_WIDTH * 2/3, DEVICE_HEIGHT)];
self.leftView.backgroundColor = [UIColor redColor];
[self.view addSubview:self.leftView];
self.leftView.hidden = YES;
//创建滑动手势
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
//为目标View添加手势
[self.leftView addGestureRecognizer:recognizer];
//滑动响应方法
- (void)handlePan:(UIPanGestureRecognizer *)pan{
CGPoint point = [pan translationInView:self.view];
CGFloat x = pan.view.center.x + point.x;
if (x >= DEVICE_WIDTH*2/3) {
pan.view.center = CGPointMake(x, pan.view.center.y);
}
//判断滑动方向
[self commitTranslation:point];
if(pan.state == UIGestureRecognizerStateEnded){
//滑动结束根据滑动方向显示或隐藏侧滑的VIew
if (self.isRight) {
//向右滑动
[self hiddenLeftView];
}else{
//向左滑动
[self showLeftView];
}
}
//还原手势
[pan setTranslation:CGPointZero inView:self.view];
}
//按钮显示侧滑的view
-(void)buttonClick
{
if (self.leftView.hidden) {
self.leftView.hidden = NO;
[UIView animateWithDuration:0.2 animations:^{
self.leftView.frame = CGRectMake(DEVICE_WIDTH/3, 0, DEVICE_WIDTH * 2/3, DEVICE_HEIGHT);
} completion:nil];
}
}
//判断滑动方向
- (void)commitTranslation:(CGPoint)translation
{
CGFloat absX = fabs(translation.x);
CGFloat absY = fabs(translation.y);
if (absX > absY ) {
if (translation.x>0) {
self.isRight = YES;
} else {
self.isRight = NO;
}
}
}
-(void)showLeftView
{
[UIView animateWithDuration:0.2 animations:^{
self.leftView.frame = CGRectMake(DEVICE_WIDTH/3, 0, DEVICE_WIDTH * 2/3, DEVICE_HEIGHT);
} completion:^(BOOL finished) {
}];
}
-(void)hiddenLeftView
{
[UIView animateWithDuration:0.2 animations:^{
self.leftView.frame = CGRectMake(DEVICE_WIDTH, 0, DEVICE_WIDTH * 2/3, DEVICE_HEIGHT);
} completion:^(BOOL finished) {
self.leftView.hidden = YES;
}];
}