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 滑动操作中的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在部分中为特定行滑动 tableviewcell

删除firebase中的数据后如何刷新TableViewCell?

tableviewcell 中的图像不会立即出现

滑动单元格时,有没有办法从 tableViewCell 导航到另一个视图控制器?

如何将图像从 TableViewCell 传递到 UIImage

如何通过单击swift4中的addImage按钮将图像一张一张添加到tableviewcell中