SwiftUI'de Paketi Resimle Kullanma
Örneğin: projemde Bundle var, buna "Game.Bundle" deniyor
let b :Bundle = Bundle.init(path: Bundle.main.path(forResource:"Game", ofType:"bundle")!)!
Image("Giyuu",bundle:self.b)
ama Bundle çalışmıyor.
özel Paketi nasıl kullanabilirim

Yanıtlar
SwiftUI Image(_ , bundle: _)
, ilgili paketin Varlıklar kataloğunda görüntü kaynağını arar. Sizin durumunuzda, görüntü yalnızca normal dosya olarak gömülüdür, bu nedenle onu bulup dosya olarak yüklemeniz gerekir. Image
kendisi bunu yapamaz, bu yüzden UIImage
böyle bir imkana sahip olanla inşa edilmelidir .
Yani, sen varsayarak Game.bundle
olduğunu PlugIns
(- sadece doğru gelen yol yapımı altında değilse) burada mümkün yaklaşımdır ana paketin alt klasöründe.
Xcode 12 / iOS 14 ile test edildi
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)
}
}
Sağlanan snippet'iniz b
hem self
örnek hem de yerel değişken olarak referans veriyor gibi görünüyor
let b :Bundle = Bundle.init(path: Bundle.main.path(forResource:"Game", ofType:"bundle")!)!
Image("Giyuu",bundle:self.b)
İstedin mi?
let bundle :Bundle = Bundle.init(path: Bundle.main.path(forResource:"Game", ofType:"bundle")!)!
let image = Image("Giyuu",bundle:bundle)
Ya !
da bazı sorun analizleri ekleyerek güç açmalarını ortadan kaldırmak için yeniden düzenlenmiştir .
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
}