Cómo usar el paquete en SwiftUI con imagen
Por ejemplo: tengo Bundle en proyecto, se llama "Game.Bundle"
let b :Bundle = Bundle.init(path: Bundle.main.path(forResource:"Game", ofType:"bundle")!)!
Image("Giyuu",bundle:self.b)
pero el paquete no funciona.
¿Cómo puedo usar un paquete personalizado?

Respuestas
SwiftUI Image(_ , bundle: _)
busca un recurso de imagen en el catálogo de activos del paquete correspondiente. En su caso, la imagen está incrustada como un archivo normal, por lo que debe buscarla y cargarla como archivo. Image
en sí mismo no puede hacer eso, por lo que debe construirse con UIImage
esa posibilidad.
Entonces, suponiendo que Game.bundle
esté en PlugIns
la subcarpeta del paquete principal (si no, simplemente corrija la construcción de la ruta correspondiente a continuación), aquí hay un enfoque posible.
Probado con Xcode 12 / iOS 14
struct ContentView: View {
var body: some View {
Image(uiImage: gameImage(name: "test") ?? UIImage())
}
func gameImage(name: String, type: String = "png") -> UIImage? {
guard let plugins = Bundle.main.builtInPlugInsPath,
let bundle = Bundle(url: URL(fileURLWithPath:
plugins).appendingPathComponent("Game.bundle")),
let path = bundle.path(forResource: name, ofType: type)
else { return nil }
return UIImage(contentsOfFile: path)
}
}
Su fragmento, tal como se proporciona, parece hacer referencia b
tanto a self
una instancia como a una variable local
let b :Bundle = Bundle.init(path: Bundle.main.path(forResource:"Game", ofType:"bundle")!)!
Image("Giyuu",bundle:self.b)
¿Querías?
let bundle :Bundle = Bundle.init(path: Bundle.main.path(forResource:"Game", ofType:"bundle")!)!
let image = Image("Giyuu",bundle:bundle)
O refactorizado para eliminar los desenvolvimientos forzados !
con algún análisis de problemas agregado.
func getGiyuuImage() -> Image {
guard let path = Bundle.main.path(forResource:"Game", ofType:"bundle"), let bundle = Bundle(path: path) else {
fatalError("dev error - no Game bundle")
}
let image = Image("Giyuu",bundle: bundle)
return image
}