Мне, вероятно, не хватает чего-то очевидного здесь, но я не смог решить следующую проблему:
У меня есть проект с ресурсами изображения как для обычных, так и для сетчатых экранов, например someimage.png и [email protected], которые хранятся в отдельном комплекте. Когда я создаю проект, Xcode автоматически упаковывает их в один многостраничный tiff (imageName.tiff
), я проверил его в finder - это фактически многостраничный tiff с обоими изображениями. Однако здесь возникает проблема: я изо всех сил пытаюсь загрузить соответствующий ресурс.
Что я делаю:
NSString * imageName = ... ;
NSLog(@"imageName: %@", imageName);
UIImage * someImage = [UIImage imageNamed: imageName];
Также я использую вспомогательный метод, который возвращает пакет с ресурсами:
+(NSBundle *) resourcesBundle
{
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"MyResourcesBundle" withExtension:@"bundle"]];
return bundle;
}
Я пробовал следовать за imageName
:
imageName = [[AuxClass resourcesBundle] pathForResource:@"someimage" ofType:@"png"];
в этом случае у null
для imageName
.
imageName = [[AuxClass resourcesBundle] pathForResource:@"someimage" ofType:@"tiff"];
в этом случае возвращается возвращенный путь образа, но он работает только, если я использую imageWithContentsOfFile
вместо imageNamed
, и он не принимает соответствующий ресурс: он загружает ресурс для сетчатки, несмотря на тип экрана.
Если я омпит filetype (как и раньше, добавляя ресурсы @2x
, и он работал нормально, и это было первое, что я пробовал, и был уверен, что это сработает)
imageName = [NSString stringWithFormat: @"%@/%@",
@"MyResourcesBundle.bundle"",
@"someimage" ];
ничего не загружается.
Добавление расширения .tiff имеет тот же эффект, что и pathForResource:
- загружается ресурс для сетчатки, без учета ресурса для экрана без сетчатки.
Так что мне не хватает? Каков правильный способ загрузки изображений?