自定义 SF 符号不呈现分层着色

Posted

技术标签:

【中文标题】自定义 SF 符号不呈现分层着色【英文标题】:Custom SF Symbol not rendering hierarchical shading 【发布时间】:2021-10-12 22:05:05 【问题描述】:

我有一个自定义 SF Symbol,当在 SF Symbols 3 应用程序中查看时,它会呈现分层阴影,但在使用 SwiftUI 的 ios 中,它呈现为单色。

这是 SF Symbols 3 应用程序中的符号:

这是在资产目录中作为 3.0 模板导入的符号:

这里是渲染它的代码:

  Image("custom.figure.steps")
    .font(.largeTitle)
    .padding(.trailing)
    .symbolRenderingMode(.hierarchical)
    .foregroundColor(status.statusColor)

这是它在 iOS 模拟器中的呈现方式:

如何获得分层阴影?

【问题讨论】:

你试过用标准系统颜色渲染它吗?我们不知道您的status.statusColor 是什么。 刚刚尝试使用 Color(uiColor: .systemRed)Color(uiColor: .systemGray) 并且仍然呈现为单色。 另外,您需要显示您在 SF Symbols 中设置的图层。 @Yrb 已编辑以包含符号图层。 您是否将其导出为 3.0 模板以导入 Xcode?​​span> 【参考方案1】:

好的,发现我的错误了。我导出为模板,没有保留图层。当我导出为符号 3.0 时,图层被保留,现在一切都按预期呈现。

我是如何诊断的:

将我作为模板导出的 SVG 重新导入到 SF Symbols 中,发现那里只有一个图层 导出为符号并将其导入 Xcode,呈现为层次结构

底线:在导入 Xcode 时导出为符号,而不是作为模板。

【讨论】:

以上是关于自定义 SF 符号不呈现分层着色的主要内容,如果未能解决你的问题,请参考以下文章

如何在公共图标类中一起管理自定义导入图标和 sf 符号的大小调整?

Drupal 7自定义菜单渲染

自定义着色器不接收光线

iOS10 + SceneKit:使用自定义着色器渲染视频

如何在 SwiftUI Toggle 中使用自定义图像

swiftui 在您的项目中使用非 SF Symbols SVG