Я создаю частную библиотеку, которая включает ресурсы, на которые ссылаются компоненты в библиотеке. Библиотека используется совместно с приложениями с использованием CocoaPods. В .podspec для библиотеки я включил такую строку:
s.resource_bundles = {'IXMapKitResources' => ['IXMapKit/Resources/*']}
Один из ресурсов в комплекте - это каталог активов с несколькими наборами изображений, один из которых называется "IXMKAnnotationIcons-Normal-Accident". Следующий код возвращает нуль:
UIImage * image = [UIImage imageNamed: @"IXMKAnnotationIcons-Normal-Accident"];
Я нашел статью на mokacoding.com, описывающую загрузку шрифтов из модуля, но это не сработало для меня:
- (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;
}
}
Веб-страница CocoaPods, описывающая ключевое слово ресурса, имеет следующее предупреждение:
Мы настоятельно рекомендуем рекомендовать разработчикам библиотеки, чтобы принять пакеты ресурсов как могут возникнуть столкновения имен с использованием атрибута ресурсов. более того ресурсы, указанные с этим атрибутом, копируются непосредственно в клиента, поэтому они не оптимизированы Xcode.
Я не понимаю, что делать здесь.