标签: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事件,滑动的时候移动其位置,使按钮可以显示出来。
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]; }
标签:blog http io ar os sp on div art
原文地址:http://www.cnblogs.com/zhongriqianqian/p/4159241.html