Auf den Punkt gebracht:Wie kann ich ein Bild von Assets.car (kompilierte Version von xcassets) in einem NSBundle laden?
Wie kann ich innerhalb eines NSBundle
Bilder aus einer kompilierten Assets.car
laden?
Full Version:
Ich bin im Begriff, eine Suite von Anwendungen zur Umwandlung von CocoaPods
zu verwenden. Jede App basiert auf einem freigegebenen Pod namens Core
.
Core
enthält Codedateien, xib
Dateien und mehrere xcasset
Dateien.
Hier ist die entsprechende Zeile aus dem Podspec
für Core
, die das Ressourcenpaket erstellt:
s.resource_bundles = {'CoreResources' => ['Core/Resources/*']}
Die Podspec
geht pod spec lint
und Hauptprojekt, das auf sie baut richtig setzt.
jedoch keine der Bilder von allen xcasset
Dateien innerhalb Core
zeigen.
ich bin (naiv) versucht, die Bilder mit einer Kategorie auf UIImage
wie folgt zu laden:
@implementation UIImage (Bundle)
+ (UIImage *)imageNamed:(NSString *)name bundle:(NSBundle *)bundle
{
if (!bundle)
return [UIImage imageNamed:name];
UIImage *image = [UIImage imageNamed:[self imageName:name forBundle:bundle]];
return image;
}
+ (NSString *)imageName:(NSString *)name forBundle:(NSBundle *)bundle
{
NSString *bundleName = [[bundle bundlePath] lastPathComponent];
name = [bundleName stringByAppendingPathComponent:name];
return name;
}
@end
Zuvor war Core
eine submodule
, und diese Lösung funktionierte gut. Doch bei der Untersuchung meiner früheren bundle
Datei (getrennt von main
Bündel), bemerkte ich, dass alle Bilder wurden einfach in die bundle
kopiert werden ... das heißt
Image.png
, [email protected]
, etc alle im Bündel waren.
Bei näherer Betrachtung des CocoaPods
-Generated Bündel, es enthält ein
Assets.car
, die ich verstehe, eine kombinierte, kompilierte Version von zu sein, alle die xcasset
Dateien innerhalb des Core
Unterverzeichnis.
Wie kann ich Bilder von diesem kompilierten Assets.car
innerhalb dieses Core
Ressourcenbündels laden?
Als Hack, ich nehme an, ich könnte ...
Die Podspec syntax reference gibt dies als Beispiel:
spec.resource = "Resources/HockeySDK.bundle"
Dies scheint darauf hinzudeuten, dass es zu schaffen das Bündel manuell möglich ist innerhalb von Xcode und CocoaPods einfach kopieren.
Dies ist eher eine Hack als eine Lösung.
Ich glaube CocoaPods (v 0.29+) kann dies vollständig ...?
+1: Ja, ich habe etwas sehr ähnliches getan. Sie können CocoaPods tatsächlich dazu veranlassen, das Ressourcenbündel vollständig für Sie zu erstellen - ohne die Vorinstallations-Hooks zu benötigen. Ich werde versuchen, dies als eine andere mögliche Lösung für diese bald zu schreiben. –
@ JRG-Entwickler Super, würde es gerne sehen. – Wilmar
Würde mich freuen, moderne Nicht-Hack-Version zu sehen –