更改UITableView删除图像swit

Ale*_*row 0 uitableview delete-row ios swift

我需要更改UITableView Cell的" - "按钮颜色和删除按钮(按下" - "按钮后显示)图像.我在iOS中尝试了这个答案uitableview删除按钮图像但它在UITableView编辑模式下不起作用.请帮忙.

小智 6

我们可以在以下步骤中执行此操作:

1.)首先,添加UIView扩展

extension UIView {
    func image() -> UIImage {
       UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0)
       guard let context = UIGraphicsGetCurrentContext() else {
        return UIImage()
       }
       layer.render(in: context)
       let image = UIGraphicsGetImageFromCurrentImageContext()
       UIGraphicsEndImageContext()
       return image!
   }
Run Code Online (Sandbox Code Playgroud)

}

2.)第二步添加以下UITableView的委托方法.

    override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
        return .delete
}

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let kCellActionWidth = CGFloat(70.0)// The width you want of delete button
    let kCellHeight = tableView.frame.size.height // The height you want of delete button
    let whitespace = whitespaceString(width: kCellActionWidth) // add the padding 


    let deleteAction = UITableViewRowAction(style: .`default`, title: whitespace) {_,_ in
        // do whatever the action you want
    }

    // create a color from patter image and set the color as a background color of action
    let view = UIView(frame: CGRect(x: tableView.frame.size.width-70, y: 0, width: 70, height: kCellHeight))
    view.backgroundColor = UIColor(red: 219.0/255.0, green: 71.0/255.0, blue: 95.0/255.0, alpha: 1.0) // background color of view
    let imageView = UIImageView(frame: CGRect(x: 15,
                                              y: 20,
                                              width: 40,
                                              height: 40))
    imageView.image = UIImage(named: "xyz")! // required image
    view.addSubview(imageView)
    let image = view.image()

    deleteAction.backgroundColor = UIColor.init(patternImage: image)
    return [deleteAction]

}

fileprivate func whitespaceString(font: UIFont = UIFont.systemFont(ofSize: 15), width: CGFloat) -> String {
    let kPadding: CGFloat = 20
    let mutable = NSMutableString(string: "")
    let attribute = [NSFontAttributeName: font]
    while mutable.size(attributes: attribute).width < width - (2 * kPadding) {
        mutable.append(" ")
    }
    return mutable as String
}
Run Code Online (Sandbox Code Playgroud)