В двух словах:
Как загрузить изображения из скомпилированного 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+) может справиться с этим полностью...?