码迷,mamicode.com
首页 > 其他好文 > 详细

UITableViewCell左滑显示按钮菜单

时间:2014-12-12 11:29:10      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   os   sp   on   div   art   

http://blog.jobbole.com/67272/

编辑模式下左滑可以显示DELETE按钮。如何可以自定义左滑显示的按钮呢?

整体思路

1.自定义UITableViewCell,并为其contentView添加左滑时希望显示的按钮。

2.在contentView上添加一个相同大小subView,作为正常情况下tableViewCell显示的内容。

3.为此subView添加pan事件,滑动的时候移动其位置,使按钮可以显示出来。

需要注意的问题

 

具体实现(仿微信效果)

新建自定义的TableViewCell

1.新建自定义的TableViewCell:DogTableViewCell。在storyboard中关联并添加左滑时希望显示的按钮。

2.在contentView上添加一个相同大小subView:containerView,作为正常情况下tableViewCell显示的内容。

3.设置containerView相对于其父view(contentView)的约束,并为其左右约束连接IBOutlet。左右滑动的时候需要修改这两个约束的值。

@property (nonatomic, weak) IBOutlet NSLayoutConstraint *contentViewRightConstraint;
@property (nonatomic, weak) IBOutlet NSLayoutConstraint *contentViewLeftConstraint;

 

 左滑显示按钮

1.在awakeFromNib时添加UIPanGestureRecognizer。

    self.panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panThisCell:)];
    self.panRecognizer.delegate = self;
    [self.containerView addGestureRecognizer:self.panRecognizer];

 

2.左滑动,移动containerView,显示按钮。

在UIGestureRecognizerStateBegan时,保存初始坐标:

self.panStartPoint = [recognizer translationInView:self.containerView];
self.startingRightLayoutConstraintConstant = self.contentViewRightConstraint.constant;

UIGestureRecognizerStateChanged时,根据新坐标判断是否左移。如果是的话,改变左右约束:

                if (panningLeft){
                    CGFloat constant = MIN(-deltaX, [self buttonTotalWidth]);
                    self.contentViewRightConstraint.constant = constant;
                    self.contentViewLeftConstraint.constant = -self.contentViewRightConstraint.constant; //8
                    self.trackButton.hidden = NO;
                    self.deleteButton.hidden = NO;
                }

 在UIGestureRecognizerStateEnded时,根据移动的多少,判断要全部打开还是关闭,并用动画实现:

                if (self.contentViewRightConstraint.constant >= halfOfButtonOne) {
                    [self setConstraintsToShowAllButtons:YES notifyDelegateDidOpen:YES];
                } else {
                    [self resetConstraintContstantsToZero];
                }

 

UITableViewCell左滑显示按钮菜单

标签:blog   http   io   ar   os   sp   on   div   art   

原文地址:http://www.cnblogs.com/zhongriqianqian/p/4159241.html

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