Пользовательский символ SF не отображает иерархическое затенение

#ios #swift #swiftui #sf-symbols

Вопрос:

У меня есть пользовательский символ SF, который отображается с иерархическим затенением при просмотре в приложении SF Symbols 3, но в iOS с использованием SwiftUI он отображается как монохромный.

Вот символ в приложении SF Symbols 3:

пользовательский символ в приложении SF Symbols 3, отображающем слои

Вот символ, импортированный в качестве шаблона 3.0 в каталоге активов:

символ в каталоге активов

Вот код для его визуализации:

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

Вот как он отображается в симуляторе iOS:

пользовательский символ, отображаемый в iOS

Как мне получить иерархическое затенение?

Комментарии:

1. Вы пробовали отрисовывать его стандартным системным цветом? Мы не можем сказать, что у тебя status.statusColor такое.

2. Только что попробовал с Color(uiColor: .systemRed) и Color(uiColor: .systemGray) и все еще рендеринг как монохромный.

3. Кроме того, вам нужно показать слои, которые вы настроили в символах SF.

4. @Yrb Отредактирован, чтобы включить слои символов.

5. Вы экспортировали его в качестве шаблона 3.0 для импорта в Xcode?

Ответ №1:

Хорошо, я обнаружил свою ошибку. Я экспортировал как шаблон, который не сохранил слои. Когда я экспортировал как символ 3.0, слои были сохранены, и теперь все отображается так, как ожидалось.

Как я поставил диагноз:

  • импортировал SVG, который я экспортировал в качестве шаблона, обратно в символы SF и заметил, что там был только один слой
  • экспортируется как символ и импортируется в Xcode, отображается как иерархический

Итог: Экспортируйте как символ, а не как шаблон при импорте в Xcode.