尝试在tableView中设置带有图像的按钮:editActionsForRowAt:

时间:2018-01-28 04:04:54

标签: ios swift uitableview uitableviewrowaction

使用Xcode 9.2,在UITableView中,我正在设置一个带图像的按钮,当一个单元格被刷掉时没有文本。 这是我正在使用的准确代码:

func tableView(_ tableView: UITableView,
               editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let myButton = UITableViewRowAction(style: .normal, title: "") {
        action, index in
        print("myButton was tapped")
    }
    myButton.backgroundColor = UIColor(patternImage: UIImage(named: "myImage")!)

    return [myButton]
}

它可以工作,但图像显示在单元格的底部。

如何将其带到中心?

以防万一,这是我用于测试的图像(70x70像素):

enter image description here

以下是表格视图中的内容:

enter image description here

1 个答案:

答案 0 :(得分:2)

这是其中一种方式。您必须使用UIGraphicsBeginImageContextWithOptions创建图片。

func swipeCellButtons() -> UIImage 
 {
     let commonWid : CGFloat = 40
     let commonHei : CGFloat = 70 // EACH ROW HEIGHT

     var img: UIImage = UIImage(named: "pause") // TRY IMAGE COLOR WHITE

     UIGraphicsBeginImageContextWithOptions(CGSize(width: commonWid, height: commonHei), false, UIScreen.main.scale)
     let context = UIGraphicsGetCurrentContext()
     context!.setFillColor(UIColor.clear.cgColor)
     context!.fill(CGRect(x: 0, y: 0, width: commonWid, height: commonHei))
     var img: UIImage = UIImage(named: "pause")!
     img.draw(in: CGRect(x: 5, y: 15, width: 30, height: 30))
     let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
     UIGraphicsEndImageContext()

     return newImage
 }


func tableView(_ tableView: UITableView,
               editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let myButton = UITableViewRowAction(style: .normal, title: "") {
        action, index in
        print("myButton was tapped")
    }

    let patternImg = swipeCellButtons()
    myButton.backgroundColor = UIColor(patternImage: patternImg)

    return [myButton]
}