码迷,mamicode.com
首页 > 微信 > 详细

cell拖拽滑动效果(微信聊天cell向左滑动,漏出标记已读和删除按钮)

时间:2017-05-09 16:54:26      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:margin   完全   class   animate   select   default   删除按钮   targe   atom   

@interface BillsCell ()

@property (nonatomic, strong) UIPanGestureRecognizer *panRecognizer;

@property(nonatomic,assign) CGFloat lastDownX ;

@property(nonatomic,assign) CGFloat originX ;

@end

 

@implementation BillsCell

 

- (void)awakeFromNib {

 

    //给背景添加手势

    UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panBg:)];

    [_bgView addGestureRecognizer:pan];

    

    self.originX = self.bgView.frame.origin.x ;

}

-(void)panBg:(UIPanGestureRecognizer*)pan

{

    _panRecognizer = pan;

    switch (pan.state) {

        case UIGestureRecognizerStateBegan:

            [self beganDrag];

            break;

            

        case UIGestureRecognizerStateEnded:

            [self endedDrag];

            break;

            

        default:

            [self dragging:pan];

            break;

    }

   

}

#pragma mark 开始拖动

- (void)beganDrag

{

    _lastDownX = self.bgView.frame.origin.x;

    

}

 

#pragma mark 结束拖动

- (void)endedDrag

{

    // 取出当前x位置

    CGFloat x = self.bgView.frame.origin.x;

    // 取出宽度(需要漏出来的按钮宽度)

    CGFloat width = self.deleteCellBtn.frame.size.width;

    

    if ( x >= self.originX -0.5*width && x <= self.originX) { // 回原点

        

        x = self.originX;

        

    } else if(x < self.originX - 0.5*width && x >= self.originX - width){ // 停到最左边

        

        x = self.originX - width;

        

    }

    

    CGRect frame = self.bgView.frame;

    frame.origin.x = x;

    

    [UIView animateWithDuration:0.3 animations:^{//动画执行到最终的位置

        

        self.bgView.frame = frame;

        

    }];

 

}

 

// 3/4 imageview完全显示,遮盖完全消失

#pragma mark 正在拖动

- (void)dragging:(UIPanGestureRecognizer *)pan

{

    // 手势移动距离

    CGFloat tx = [pan translationInView:self.bgView].x;

    

   CGFloat  x =  tx + _lastDownX;

       // 取出宽度(需要漏出来按钮宽度)

    CGFloat width = self.deleteCellBtn.frame.size.width;

    

     if( x < self.originX - width ){

         

         x = self.originX -width;

         

     }

    

    if ( x > self.originX  ){

         

        x = self.originX;

        

    }

  

    CGRect  frame = self.bgView.frame ;

    frame.origin.x = x;

    self.bgView.frame = frame;

       

}

 

cell拖拽滑动效果(微信聊天cell向左滑动,漏出标记已读和删除按钮)

标签:margin   完全   class   animate   select   default   删除按钮   targe   atom   

原文地址:http://www.cnblogs.com/yeas/p/6831217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!