Wie laden von Ressourcen in cocoapods resource_bundle
Ich habe gekämpft, viel gewusst wie: laden Sie die Ressource im cocoapods resource_bundle.
Folgende ist, was ich in der .podspecs
Datei.
s.source_files = 'XDCoreLib/Pod/Classes/**/*'
s.resource_bundles = {
'XDCoreLib' => ['XDCoreLib/Pod/Resources/**/*.{png,storyboard}']
}
Dies ist, was ich versuche zu tun, aus der hauptassembly des Projekts.
let bundle = NSBundle(forClass: XDWebViewController.self)
let image = UIImage(named: "ic_arrow_back", inBundle: bundle, compatibleWithTraitCollection: nil)
print(image)
Ich sehe, hat das Bild in der XDCoreLib.bundle
, aber es wieder eine null.
- Tun Sie das nicht, kopieren Sie einfach diese Ressourcen in Ihr Projekt, weil diese Ressourcen in Pads können aktualisiert werden / jederzeit entfernt.
- Diese Gruppe wird gepflegt von uns. Der Größe des Projektes wird immer größer und größer, und wir möchten, trennen Sie jedes Modul.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kämpfte ich mit einem ähnlichen Problem für eine Weile. Das Ressourcen-bundle für ein pod ist eigentlich ein separates Bündel von wo aus Sie Ihren code Leben. Versuchen Sie Folgendes:
XDWebViewController.self
sollte eine Klasse in der Hülse.XDWebViewController.self
für jede Klasse, die in der Hülse. das Ziel, dass die Linie des Codes zu identifizieren, die die framework-bundle mit jeder Klasse gehörenden Rahmen (pod)Ich glaube nicht, dass einer der anderen Antworten beschrieben haben, die Beziehung zu den Podspec. Die bundle-URL verwendet den Namen der pod und dann
.bundle
um die Ressource zu finden-bundle. Dieser Ansatz funktioniert mit asset-Kataloge für den Zugriff auf pod Bilder sowohl innerhalb als auch außerhalb der Schule.Podspec
Objective-C
Swift
Sehen diese Antwort.
Diese arbeiten
In
.podspec
hinzufügens.resources
nebens.resource_bundles
(pod install
danach)Dann in Ihrem code, die so einfach wie:
Hinweis: Sie müssen möglicherweise ausführen
pod install
nach der Aktualisierung der.podspec
um die änderungen zu Ihrem Xcode-projKönnen Sie einfach überprüfen Sie die ID des Bundles durch Auswahl mit dem Pods-Projekt, die Auswahl der gewünschten Ziel, und dafür, dass Sie sich auf der Registerkarte "allgemein".
Dann in code, den Sie laden können, sagen Sie ein Bild in das Pod wie so:
Können, erstellen Sie eine Erweiterung, um den Zugriff auf die framework-bundle, leichter in Ihre framework-Quellcode
Interessante Sache ist, wenn Sie brauchen, um es in den source-Dateien, die auch in der Bibliothek cocoapod
Ich stieß darauf bei der Verwendung einer xib-und plist-Dateien in meinem pod.
Wurde gelöst in dem nächsten Weg. Beispiel für das laden einer xib-Datei:
Just for the record: ich wollte zu öffnen, eine Feder aus einer Kategorie gespeichert CocoaPods Bibliothek. Natürlich
[self classForCoder]
gabUIKit
zurück (wegen der Kategorie), so dass die oben genannten Methoden nicht funktionieren.Ich das Problem behoben mit einige hartkodierte Pfade:
Wie es scheint, aus irgendeinem Grund **/*.{Erweiterungen} Muster ist erforderlich für diese zu arbeiten, ich landete meine podspec wie diese
obwohl meine eigentliche Pfad ist Pod/Resources/.storyboard*
Dann auch auf der Suche mein Bündel, die ich verwendet
@Jhelzer Antwort obwohl eine Möglichkeit zu bündeln z.B. von Klasse oder einer URL oder die bundleID funktioniert nach dem oben beschriebenen setup.
Können Sie auch einen Blick in diese Antwort für mehr refrences.