2010-11-03 4 views
2

Я пытаюсь преобразовать проект с изображениями в статическую библиотеку.Использование изображений из статической библиотеки

код, который получает изображение выглядит следующим образом:

[UIImage imageNamed:@"foo.png"] 

Когда я включаю эту библиотеку в другой проект, изображение не загружается. Однако, если я копирую изображения в новый проект, он загружается.

Есть ли способ заставить это работать, где изображения содержатся только в библиотеке, и мне не нужно их копировать в мой проект?

Кстати, мои пути поиска заголовков содержат путь к тому, где эти изображения находятся в библиотеке, если это имеет значение.

ответ

0

Статическая библиотека не может содержать ресурс связки. Поэтому простое связывание файла .a будет недостаточным. Но вы должны иметь возможность перекрестно ссылаться на статическую библиотеку xcodeproj. Example

+0

Но изображение может быть закодировано в Base64 и жестко закодировано в статической библиотеке. – uchuugaka

+0

@uchuugaka - встроенное изображение base64 не может быть загружено с помощью [UIImage imageNamed:]. Как я понимаю, вызов [UIImage imageNamed:] находит изображение из предварительно скомпилированного Bundle. И статическая библиотека не может содержать Bundles. – tidwall

0

Имел аналогичную ситуацию и написал сценарий для копирования файлов в .app во время компиляции. Аналогичное исправление для того, которое мы используем, описано в разделе «Некодовые активы для статических библиотек», раздел on this web page. Это работает, но может вызвать некоторые ошибки подписи кода. Другой вариант - создать вторую цель .bundle для ресурсов described on this web page, хотя по какой-то причине я не смог получить сборку для сборки. В настоящее время я ищу сценарий для копирования ресурсов в пакет во время компиляции и компиляции любых .xib-файлов в .nibs, это также возможное решение, на которое вы могли бы обратить внимание.

3

Просто предварять имя расслоения, который содержит изображение с именем изображения:

[UIImage imageNamed:@"Myframework.bundle/MyImage" 

Это также работает в Interface Builder, предварительный просмотр может быть нарушена, но изображение будет правильно загружена.

Если вы используете CocoaPods (что я бы рекомендовал), обязательно используйте опцию resource_bundles для ваших изображений и Nibs.

Вы можете увидеть связанный ответ here.

+0

Ваш ответ на этот вопрос верен. Но я хочу задать этот вопрос: http://stackoverflow.com/questions/22869670/how-can-i-load-an-image-from-assets-car-compiled-version-of-xcassets-within-an –

+0

Это не работает для меня. Я пытаюсь загрузить изображение из пакета, добавленного в статическую библиотеку. Там все равно я получаю доступ к xcassets в комплекте? – user1010819