Charger une image à partir de CocoaPods regroupement de ressources
Je suis de la création d'une bibliothèque privée qui comprend des ressources qui sont référencés par des composants dans la bibliothèque. La bibliothèque est partagé avec des applications à l'aide de CocoaPods. Dans l' .podspec pour la bibliothèque, j'ai inclus une ligne comme ceci:
s.resource_bundles = {'IXMapKitResources' => ['IXMapKit/Resources/*']}
L'une des ressources dans le bundle est un atout catalogue avec des images de multiples ensembles, dont l'un est appelé " IXMKAnnotationIcons-Normal-par Accident. Le code suivant renvoie un néant:
UIImage * image = [UIImage imageNamed: @"IXMKAnnotationIcons-Normal-Accident"];
J'ai trouvé un l'article sur mokacoding.com décrivant comment charger des polices à partir d'un conteneur, mais cela n'a pas fonctionné pour moi:
- (UIImage *) ixmk_imageNamed: (NSString *) name
{
NSString * IXMKResourceBundleName = @"IXMapKitResources.bundle";
NSString * resourceName = [NSString stringWithFormat: @"%@/%@", IXMKResourceBundleName, name];
NSString * imageTypeString = [self ixmk_stringForImageType: imageType];
NSURL * url = [[NSBundle mainBundle] URLForResource: resourceName withExtension: imageTypeString];
NSData * imageData = [NSData dataWithContentsOfURL: url];
if (imageData != nil)
{
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef) imageData);
CGImageRef imageRef = [self ixmk_imageFromDataProvider: provider imageType: imageType];
UIImage * image = [UIImage imageWithCGImage: imageRef];
CFRelease(imageRef);
CFRelease(provider);
return image;
}
else
{
return nil;
}
}
La CocoaPods page web décrivant les ressources de mots clés a l'avertissement suivant:
Nous vous recommander bibliothèque développeurs à adopter des offres de ressources comme
il peut y avoir des collisions de nom en utilisant les ressources de l'attribut. De plus
ressources spécifiées avec cet attribut sont copiés directement à l'
client cible et, par conséquent, ils ne sont pas optimisés par Xcode.
Je suis à une perte de quoi faire ici.
- Voir ma réponse pour la question similaire ici: stackoverflow.com/a/32315571/235290
Vous devez vous connecter pour publier un commentaire.
Cela s'avère être un problème avec des actifs de catalogues, de ne pas CocoaPods ou des lots. Déplacer les images de l'actif catalogue résolu le problème. Il ressemble à la Pomme n'a pas le soutien actif des catalogues dans le secondaire des ressources. La pitié.
Image.xcassets
dans un regroupement de ressources, il est impossible de charger des images à partir d'elle?!Par exemple Paramount
podspec
swift
Ici
Paramount.Toolbar.self
peut être n'importe quelle classe dans ce cadreLa solution la plus évidente qui n'était pas répertoriée n'importe où à l'aide de la Cocoapods généré bundle (qui le dossier en réalité n'existe pas) comme un NSBundle:
avoir un essai:
http://blog.flaviocaetano.com/post/cocoapods-and-resource_bundles/
il a travaillé pour moi!!
[NSBundle bundleForClass:NSStringFromClass(self.class)]
les bundle de l'intérieur cocoapod code.Quant à moi, j'ai dû ajouter le "s.ressources" dans la .podspec. Avant c'était manquant.
Seulement les.resource_bundles ont été mis de cette façon: 'BPPicker/Assets/.', changé en " BPPicker/Assets/*' ainsi.
s.resources
emplacement de lapodspec
enfin résolu ce problème pour moi aussi.J'ai fait un pod qui peuvent localiser les regroupements de ressources dans les gousses.
J'espère qu'il va mettre fin à la "CocoaPods regroupement de ressources" problème une fois pour toutes.
https://github.com/haifengkao/PodAsset
Cette réponse travaille avec Swift3 et Swift4.
Créer une fonction dans le répertoire module dans le fichier.
Utilisation