【问题标题】:How add custom image to uitableview cell swipe to delete如何将自定义图像添加到 uitableview 单元格滑动以删除
【发布时间】:2015-06-02 19:30:38
【问题描述】:

你能告诉我,如何在 UITableview 上滑动单元格时添加自定义图像以删除按钮?

【问题讨论】:

  • 为了防止您的帖子被否决,您可能需要添加一些额外的信息,例如,到目前为止您尝试了什么,您当前的代码是什么样的等等。
  • 我写了一个关于如何做到这一点的可下载项目的教程。您可以在单元格下方添加任何对象。 xcodenoobies.blogspot.my/2016/11/…

标签: uitableview swift custom-cell


【解决方案1】:

搜索您需要的函数“editActionsForRowAtIndexPath”,您可以在其中创建操作范围。您需要将 UIImage 设置为 UITableViewRowAction 的 backgroundColor。

let someAction = UITableViewRowAction(style: .Default, title: "") { value in 
    println("button did tapped!")
}
someAction.backgroundColor = UIColor(patternImage: UIImage(named: "myImage")!)

【讨论】:

  • 注意 UITableViewRowAction 仅适用于 iOS >= 8.0
  • 嗨dimpiax!不,我不想要操作范围,我只想将自定义图像添加到删除按钮。
  • 这段代码对我不起作用。它不会触发任何错误,但我没有图标或标题,而是有一个红色的小矩形。如果有任何改变,我会设置多个操作。
  • 当我使用它时,我得到的是我的图标在背景上并排重复。有没有办法让它只出现一次,真正作为一个图标?
  • @dimpiax 完全如上所示。唯一的区别是我有两个动作。他们的图标都被移到了顶部(所以我实际上可以看到它开始在底部重复),并且通过的第一个图标也水平重复(所以它被放置在第二个图标上)
【解决方案2】:

你可以使用这个 UITableView 委托函数:

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let deleteAction = UIContextualAction(style: .normal, title: "", handler: {a,b,c in
        // example of your delete function
        self.YourArray.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .automatic)
    })

    deleteAction.image = UIImage(named: "trash.png")
    deleteAction.backgroundColor = .red
    return UISwipeActionsConfiguration(actions: [deleteAction])
}

PS:我个人认为32号图标最好

【讨论】:

    【解决方案3】:

    100% 工作的可滑动单元格,带有自定义图像和带有背景颜色的图像大小 ios swift #ios #swift #ios13 #ios14

    func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    
            let action =  UIContextualAction(style: .normal, title: "", handler: { (action,view,completionHandler ) in
                self.selectedIndex  = indexPath.row
                self.deleteNotification()
                completionHandler(true)
    
            })
            
            if #available(iOS 13.0, *) {
                action.image = UIGraphicsImageRenderer(size: CGSize(width: 30, height: 30)).image { _ in
                    UIImage(named: "delete-1")?.draw(in: CGRect(x: 0, y: 0, width: 30, height: 30))
                }
                action.backgroundColor = UIColor.init(red: 0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 0.0)
                let confrigation = UISwipeActionsConfiguration(actions: [action])
                return confrigation
            } else {
                // Fallback on earlier versions
                let cgImageX =  UIImage(named: "delete-1")?.cgImage
                action.image = OriginalImageRender(cgImage: cgImageX!)
                action.backgroundColor = UIColor.init(hex: "F7F7F7")
                let confrigation = UISwipeActionsConfiguration(actions: [action])
    
                return confrigation
            }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多