公司最近提出一个需求是侧滑删除需求,很简单,但是给的图是这样的
看到这张图肯定是需要自定义的,因为之前没有自定义侧滑删除按钮过,所以就百度了一番,有许多,但是实际用起来却有很多问题。
结果一
自定义cell
这种方法只能适用于iOS 11以前的版本,而且有个bug,就是左滑菜单收起来的时候,背景图片会有闪一下的bug。
结果二
自定义cell2.0
这个方法解决了系统版本问题,解决了左滑菜单收起来的时候,背景图片会闪的bug,但是还是有个bug,就是iOS 11以上版本,在一个cell左滑菜单没有收起来时,新左滑的cell没有了想要效果。这是因为iOS11的左滑选项的视图层级有了较大改变。最显著的改变是左滑删除是UITableViewCell的子视图变成了UITableView的子视图,所以会出现这个问题。
最终解决
获取当前左滑cell的index
左滑代理
自定义按钮
这里设置图片,但是依然给出标题“删除”是因为在iOS11以下版本,title给空的话左滑删除按钮会很窄,subView.subviews[0] 获取按钮时可以拿UIButton接收,但是设置button图片时,iOS11又有bug,所以我选择拿UIView接收,然后添加图片或者自定义的界面。
代码参考另一篇UITableView左滑删除自定义代码