可以在 webview 中使用资产目录中的命名颜色吗?

Posted

技术标签:

【中文标题】可以在 webview 中使用资产目录中的命名颜色吗?【英文标题】:Possible to use named color from asset catalog in webview? 【发布时间】:2021-02-02 16:28:42 【问题描述】:

是否有任何快捷方式可以让我们在 WebView 中直接使用命名/动态 ios 颜色?

我的意思是,iOS 知道所有命名的颜色 - 为什么不将它们注入到 webview 中?

这是我尝试过的,但失败了:

<div style="color:systemBackground">Test</div>

我知道 html 和应用资产是两个不同的领域,但也许有人知道一个优雅的捷径。

【问题讨论】:

【参考方案1】:

我想这可能是一个两步的过程。第二步将用动态/命名颜色替换网页颜色:

let html = "Hello <u><b style='color:red'>World!</b></u>"
let data = html.data(using: .utf8)!
let string =  try! NSMutableAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil)

// we now replace all colors with appropriate dynamic ones
string.enumerateAttribute(.foregroundColor, in: NSRange(0..<string.length))   value, range, stop in
    if let color = value as? UIColor 
        if color.cgColor.components == UIColor.red.cgColor.components 
            string.addAttribute(.foregroundColor, value: UIColor.systemRed, range: range)
         else 
            string.addAttribute(.foregroundColor, value: UIColor.label, range: range)
        
    

【讨论】:

以上是关于可以在 webview 中使用资产目录中的命名颜色吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何以正确的方式命名 XCode 资产目录中的图像?

以编程方式从10.11中的资产目录中获取颜色?

比较两个 UIColors(点击 UIImageView 中的位置与资产目录颜色)

我们如何使用资产目录颜色集?

Webview 从资产目录加载 html

Android SDK Webview加载不在资产文件夹中的本地文件