Подтвердить что ты не робот

Каталоги активов в пакетах ресурсов

У меня есть отдельный набор ресурсов, которые поставляются с моей картой. Я хочу поместить и использовать каталог активов в этом пакете. Однако UIImage imageNamed: говорит, что он использует основной пакет текущих приложений. Как загрузить изображение из каталога активов в другом комплекте?

Трюк использования [bundle pathForResource: nameType: @ "png" ] не работает с компилируемым каталогом активов. Я проверил, что файл Assets.car действительно находится в комплекте и содержит мои изображения.

4b9b3361

Ответ 1

Начиная с iOS 8, вы можете использовать [UIImage imageNamed:inBundle:compatibleWithTraitCollection:] для загрузки изображений по имени из другого пакета. Например, динамическая структура может использовать свой собственный каталог активов отдельно от основного пакета приложений.

Ответ 2

Как разработчик Apple:

К сожалению, невозможно загрузить изображения из любого автомобильного файла, кроме того, который Xcode компилирует в ваш основной пакет, так как + imageNamed: не принимает параметр пакета, что и нужно для этого (и даже тогда он мог бы только открыть один каталог активов в одном комплекте).

Вот ссылка:

https://devforums.apple.com/message/968859#968859

Ответ 3

Существует трюк, с помощью которого каталоги активов работают с пакетами: установите целевое назначение развертывания ресурса в 6.1 (или ниже). Каталоги активов существуют только с 7.0, поэтому Xcode фактически не создаст файл .car (скомпилированный каталог активов), но скопирует его в пакет напрямую, как описано здесь:

Xcode 6 предоставляет различные функциональные возможности для каталогов активов в зависимости от > цели развертывания для вашего проекта:

  • Для всех проектов отдельные изображения могут быть загружены с использованием имен наборов.
  • Для проектов с целью развертывания, по крайней мере, для iOS 7 или OS X 10.9, Xcode компилирует ваши каталоги активов в формат двоичного файла во время выполнения, что сокращает время загрузки вашего приложения.

Предостережение заключается в том, что любая дополнительная информация (нарезка, режим рендеринга,...) игнорируется, вы получаете только простые изображения. Хотя организация через каталоги активов может быть более удобной, я чувствую, что это может привести к некоторым труднодоступным ошибкам/путанице...

Изменить: если вы примените трюк, описанный выше, вы, скорее всего, не получите преимущества приложения, используемого в iOS 9, так как после создания приложения нет компилируемого каталога активов, но осталось только куча простых изображений, поэтому Apple не сможет автоматически выделять ресурсы. Это только предположение.