如何在 UIMenu 内的 UIAction 中更改图标颜色? [复制]

Posted

技术标签:

【中文标题】如何在 UIMenu 内的 UIAction 中更改图标颜色? [复制]【英文标题】:How to change icon color in UIAction inside UIMenu? [duplicate] 【发布时间】:2020-11-06 12:44:54 【问题描述】:

尝试在 UIAction 中更改图标颜色,但更改色调似乎根本不起作用。有什么想法吗?

let imageView = UIImage(systemName: "eye")!
                    .withTintColor(.red, renderingMode: .alwaysTemplate)

下面的源代码来自苹果"Adding Menus and Shortcuts to the Menu Bar and User Interface"的例子,只有imageView是新元素。

    func contextMenuActions() -> [UIMenuElement] 
        let imageView = UIImage(systemName: "eye")?.withTintColor(.red, renderingMode: .alwaysTemplate)

        // Actions for the contextual menu, here you apply two actions.
        let copyAction = UIAction(title: NSLocalizedString("CopyTitle", comment: ""),
                                   image: imageView,
                                   identifier: UIAction.Identifier(rawValue: "com.example.apple-samplecode.menus.copy"))  action in
                                         // Perform the "Copy" action, by copying the detail label string.
                                         if let content = self.detailItem?.description 
                                             UIPasteboard.general.string = content
                                         
        

【问题讨论】:

【参考方案1】:

您需要使用渲染模式.alwaysOriginal,因为它们在内部使用UIImageView,它为所有模板图像应用自己的tintColor

所以制作

func contextMenuActions() -> [UIMenuElement] 
    let imageView = UIImage(systemName: "eye")?.withTintColor(.red, 
          renderingMode: .alwaysOriginal)                            // << here !!

给予

使用 Xcode 12.1 测试

【讨论】:

一如既往的好答案!谢谢,阿斯佩里。

以上是关于如何在 UIMenu 内的 UIAction 中更改图标颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何修改 UIBarButtonItem 和 UIButton 的 UIMenu

快速更改 UImenu 的位置

iOS 13 - UIMenu 是不是有不显示其图像的错误?

如何在 UIMenu 中制作不可点击的菜单项?

如何在 iOS 中使用 UIView 动画显示 UIView,如 UIAction 表?

iOS开发之UIMenu