Как я могу отобразить SVG в пакете Swift?

Я пытаюсь отобразить пакет изображений внутри пакета Swift.

Этот код let image = UIImage(named: "image", in: Bundle.module, compatibleWith: nil) работает, когда я использую pngизображение. Но когда я использую svg с таким же именем (image.svg) изображение nil.

Вот как я определяю папку ресурсов, в которой я сохраняю изображение. Package.swift

      resources: [
  .process("Resources"),
]

2 ответа

Ваш файл или актив может быть в xcassets, добавьте xcasset в Swift Package, затем импортируйте туда свой актив, а затем введите свои ресурсы следующим образом:

      resources: [Resource.process("Media.xcassets")]

Какие кассеты Media.xcasset содержат ваш актив, затем используйте этот код в Swift Package:

      Image("image", bundle: .module)

Я обнаружил это, поместив каталог активов в раздел «Ресурсы» и включив его в дескриптор пакета:

          .target(
        name: "AppResources",
        dependencies: [],
        resources: [
            .process("Resources")]
    ),

Затем я мог бы использовать расширение UIImage для доступа к своим ресурсам:

      public extension UIImage {
    static func packagedImage(withName name: String) -> UIImage? {            
        guard let result = UIImage(named: "\(name).png", in: Bundle.module, compatibleWith: nil) else {
            return nil
        }

        return result
    }
}
Другие вопросы по тегам