TableViewCell 滑动操作中的图像
Posted
技术标签:
【中文标题】TableViewCell 滑动操作中的图像【英文标题】:Image in TableViewCell swipe action 【发布时间】:2018-07-29 15:57:21 【问题描述】:我有一个滑动操作来“完成”我的待办事项列表应用程序中的一项任务。这是我设置的图像:
但是当单元格被滑动时,图像是这样的:
有没有办法让背景透明/白色,并且图像像上图一样有绿色圆圈?
如果没有,有没有办法让绿色背景“包裹”到单元格的紫色,这样就没有空白了? 谢谢!
【问题讨论】:
【参考方案1】:为 UIImage 想出了这个扩展:
extension UIImage
func colored(in color: UIColor) -> UIImage
let renderer = UIGraphicsImageRenderer(size: size)
return renderer.image context in
color.set()
self.withRenderingMode(.alwaysTemplate).draw(in: CGRect(origin: .zero, size: size))
当这样使用时,它会返回一个新颜色的新图标:
swipAction.image = UIImage(named: "myImage")?.colored(in: .white)
也许这对某人有帮助。
【讨论】:
这非常有效。可以应用于 UIMenu 中的 UIAction 图标。谢谢【参考方案2】:在第二张图片中,绿色是 UIContextualAction 的backgroundColor
,白色是tintColor
。
图像被视为模板图像 - 也就是说,它的颜色被忽略,而是在您的图像透明的地方绘制为透明的,在您的图像不透明的地方使用tintColor
绘制为不透明的。
因此,基本上您需要颠倒设置:将背景颜色设置为白色,并将色调颜色更改为图像中显示的深绿色。设置色调颜色并不容易,但您可以这样做,例如,在您的应用程序委托 didFinishLaunching
中使用外观代理,建议 here (尽管这可能有其他不需要的副作用):
UIImageView.appearance(
whenContainedInInstancesOf: [UITableView.self])
.tintColor = // whatever that green is
【讨论】:
这似乎不起作用?我把你写的东西放进了我的 AppDelegate.swift 但没有任何改变。这是函数: func applicationDidFinishLaunching(_ application: UIApplication) UIImageView.appearance( whenContainedInInstancesOf: [UITableView.self]) .tintColor = .yellow // 不管绿色是什么 应用委托方法被称为application(_:didFinishLaunchingWithOptions:)
。您不必添加它;它已经在那里了。
不用担心 - 很抱歉 Apple 没有提供真正的方法来做到这一点,您可以提交增强请求。【参考方案3】:
在带有 SF Symbol 的 ios 13 中,只需使用 UIImageRenderingModeAlwaysOriginal 即可更改符号颜色。
replyAction.image = [[UIImage systemImageNamed: @"arrowshape.turn.up.left.circle.fill"] imageWithTintColor: self.view.tintColor renderingMode: UIImageRenderingModeAlwaysOriginal];
【讨论】:
在 iOS 13 中,可以简单地使用action.image = someImage.withTintColor(.green, renderingMode: .alwaysOriginal)
以上是关于TableViewCell 滑动操作中的图像的主要内容,如果未能解决你的问题,请参考以下文章
删除firebase中的数据后如何刷新TableViewCell?
滑动单元格时,有没有办法从 tableViewCell 导航到另一个视图控制器?