UITableViewRowAction 的图标在 iOS 13 上显示,但在 iOS 12 上不显示

Posted

技术标签:

【中文标题】UITableViewRowAction 的图标在 iOS 13 上显示,但在 iOS 12 上不显示【英文标题】:Icon for UITableViewRowAction is shown on iOS 13, but not on iOS 12 【发布时间】:2020-05-23 10:00:51 【问题描述】:

好的,我遇到了UITableViewRowAction 的一个奇怪行为(错误)。我正在尝试向左滑动操作添加图标。 下面是我在表格视图委托的tableView(_:trailingSwipeActionsConfigurationForRowAt:) 方法中设置图标的代码(操作是UIContextualAction 的一个实例):

action.image = UIGraphicsImageRenderer(size: Constants.swipeActionImageSize)
        .image(actions:  _ in
            Constants.messageReplyIcon.draw(in: CGRect(origin: .zero,
                                                       size: Constants.swipeActionImageSize))
    )

我正在使用此解决方案,因为需要稍微调整图像大小。这在 ios 13 上运行良好,但在 iOS 12 上(实际上,在 iOS 12.2 上运行),它将图像呈现为白色圆圈。下面,你可以看到iOS 13模拟器和iOS 12.2模拟器上的图标截图一个接一个。

iOS 13

iOS 12.2

请注意,即使我只是简单地设置图像,而没有做所有花哨的调整大小的事情,也会发生这种情况。

但是,当我在 iOS 12 上查看 UI 调试器中的图像时,我看到以下内容:

我怀疑,UIContextualAction 对 iOS 12 上的图标应用了一些淡色,但无法弄清楚原因,因此无法找到解决方案。

也许,您遇到过这样的事情,或者对原因有什么想法?提前致谢。

【问题讨论】:

您找到任何解决方案了吗? 【参考方案1】:

UIContextualAction 在旧版本的 iOS 上将图像转换为将被涂成白色的模板。尽管文档没有说明任何内容。

查看模板:

https://developer.apple.com/documentation/uikit/uiimage/providing_images_for_different_appearances https://developer.apple.com/documentation/uikit/uiimage/renderingmode

【讨论】:

以上是关于UITableViewRowAction 的图标在 iOS 13 上显示,但在 iOS 12 上不显示的主要内容,如果未能解决你的问题,请参考以下文章

更改 UITableViewRowAction 内的单元格背景颜色

UITableViewRowAction 行为不可预测

使用 UITableViewRowAction 执行 segue 控制

如何在 Objective-C 的 UITableView 中使 UITableViewRowAction 完全透明

iOS 11 中的 UITableViewRowAction 太宽

如何在 UITableViewRowAction 中添加图像?