В двух словах:
Как загрузить изображения из скомпилированного Assets.car в NSBundle?
Полная версия:
Я собираюсь преобразовать набор приложений для использования CocoaPods. Каждое приложение полагается на общий пакет под названием Core.
Core включает файлы кода, файлы xib и несколько файлов xcasset.
Здесь соответствующая строка из Podspec для Core, которая создает пакет ресурсов:
s.resource_bundles = {'CoreResources' => ['Core/Resources/*']}
Podspec проходит pod spec lint, а основной проект, который полагается на него, правильно строит.
Однако ни одно из изображений из любых xcasset файлов в Core не отображается.
Я (наивно) пытаюсь загрузить изображения с помощью категории на UIImage следующим образом:
@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
Раньше Core был submodule, и это решение работало нормально. Однако при проверке моего предыдущего файла bundle (отдельно от main bundle) я заметил, что все изображения просто копируются в bundle... i.e.
Image.png, [email protected] и т.д. были в комплекте.
При проверке CocoaPods -порожденного расслоения он содержит
Assets.car
который, как я понимаю, является комбинированной, скомпилированной версией всех файлов xcasset в указанном подкаталоге Core.
Как загрузить изображения из этого скомпилированного Assets.car в этот пакет ресурсов Core?
Как взломать, я полагаю, я мог бы...
ссылка на синтаксис Podspec дает это в качестве примера:
spec.resource = "Resources/HockeySDK.bundle"
Это, по-видимому, предполагает, что можно создать пакет вручную в Xcode и CocoaPods просто скопировать его.
Это скорее хак, чем решение.
Я считаю, что CocoaPods (v 0.29+) может справиться с этим полностью...?