Swift自定义TableView左滑删除按钮样式
2018-11-16 本文已影响349人
向日葵的夏天_summer
Swift自定义TableView左滑删除按钮样式
1. 效果图
1111.png2. 实现过程
在tableView的layoutSubview中遍历,然后可以自定义一个按钮添加上去
override func layoutSubviews() {
super.layoutSubviews()
if #available(iOS 11.0, *) {
for subview in self.subviews where subview.isKind(of: NSClassFromString("UISwipeActionPullView")!) {
subview.backgroundColor = Main_RedColor
for view in subview.subviews where view.isKind(of: NSClassFromString("UISwipeActionStandardButton")!) {
view.backgroundColor = Main_RedColor
let deleteBtn = setupDeleteBtn(frame: CGRect(x: 0, y: 0, width: autoWidth(width: 160), height: view.height))
view.addSubview(deleteBtn)
view.bringSubview(toFront: deleteBtn)
}
}
} else { // IOS 10以及以下
for subview in subviews where subview.isKind(of: NSClassFromString("UITableViewCellDeleteConfirmationView")!) {
subview.backgroundColor = Main_RedColor
for view in subview.subviews where view.isKind(of: UIButton.self) {
view.backgroundColor = Main_RedColor
let deleteBtn = setupDeleteBtn(frame: view.frame)
view.addSubview(deleteBtn)
view.bringSubview(toFront: deleteBtn)
}
}
}
}
private func setupDeleteBtn(frame: CGRect) -> UIButton {
let deleteBtn = UIButton(type: .custom)
deleteBtn.frame = frame
deleteBtn.backgroundColor = Main_RedColor
deleteBtn.setTitle("删除", for: .normal)
deleteBtn.setTitleColor(UIColor.white, for: .normal)
deleteBtn.titleLabel?.font = UIFont.systemFont(ofSize: autoFont(size: 32))
deleteBtn.setImage(UIImage(named: "delete"), for: .normal)
deleteBtn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, autoWidth(width: 16))
return deleteBtn
}
3. 左滑功能
//MARK:- 左滑删除
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
return .delete
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
deleteItemByModel(chapter: chapterModels?[indexPath.row])
}