ios - 是否可以为 UIContextualAction 对象的图像着色?
问题描述
我正在尝试使用委托方法在 UITableView 上创建自定义删除操作:tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
我设置了一个透明的背景颜色和一个图标。无论我尝试什么,我都无法为图像着色。这可能吗?
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let delete = UIContextualAction(style: .destructive, title: nil, handler: { contextualAction, view, _ in
if self.inboxMessages.count > 0 {
self.inboxMessages[indexPath.row].delete(onCompletion: {success in
if success{
NSLog("Message deleted successfully!")
if self.inboxMessages.indices.contains(indexPath.row) {
self.inboxMessages.remove(at: indexPath.row)
}
DispatchQueue.main.sync {
if indexPath.row != 0 {
self.tableView.deleteRows(at: [indexPath], with: .fade)
}
self.tableView.reloadData()
}
}
})
}
})
delete.image = UIImage(named: "deleteInboxIcon")?.withRenderingMode(.alwaysTemplate).tint(with: .red)
let color = UIColor(white: 0, alpha: 0.000001)
delete.backgroundColor = color
// delete.backgroundColor = UIColor(patternImage: UIImage(named: "DefaultInboxIcon")!)
let actionsConfig = UISwipeActionsConfiguration(actions: [delete])
actionsConfig.performsFirstActionWithFullSwipe = true
return actionsConfig
}
这是我到目前为止设法实现的目标:
编辑:该tint(with:)
功能来自 CosmicMind/Material 吊舱
extension UIImage {
open func tint(with color: UIColor) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, false, Screen.scale)
guard let context = UIGraphicsGetCurrentContext() else {
return nil
}
context.scaleBy(x: 1.0, y: -1.0)
context.translateBy(x: 0.0, y: -size.height)
context.setBlendMode(.multiply)
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
context.clip(to: rect, mask: cgImage!)
color.setFill()
context.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image?.withRenderingMode(.alwaysOriginal)
}
}
解决方案
推荐阅读
- python - 搜索关键字的同义词
- regex - 在 Google 表格中创建动态参数化查询 URL
- arrays - 如何在 React Native 中将.txt 读入数组
- xpath - 如何使 IF 匹配 Google Tables 中的非布尔值?
- reactjs - 我怎样才能让一个词更胖,并在我的字符串中换行?
- google-chrome - 如何在 ASP.NET Core 的新页面中打开 PDF?(谷歌浏览器)
- powershell - 如何在 Powershell 中为团队执行嵌套循环
- python - 如何获取唯一属于其他列中值组合的唯一值?
- sql-server - 是否可以在 SQL Server 中查询空扩展属性?
- javascript - 如何使用 Javascript 数组构建 HTML 表格