Как включить изображения в библиотеку в iOS / Xcode 4 - PullRequest
6 голосов
/ 29 июля 2011

У меня есть рабочее пространство Xcode с несколькими проектами, скажем, Foo и Baz, которые зависят от некоторого общего кода, например, кода кнопки переключателя RCSwitch (можно найти здесь , если кто-тоинтересно).RCSwitch поставляется с несколькими файлами изображений, которые необходимо загружать, когда работают Foo или Baz.Они загружаются с использованием сообщения UIImage imageNamed: примерно так:

UIImage *knobTmpImage = [[[UIImage imageNamed:@"btn_slider_thumb.png"] retain] autorelease];

Насколько я понимаю, для того, чтобы это работало, изображения должны быть частью пакета приложения.Мой вопрос, как получить их там из моей библиотеки?Я попытался добавить фазу сборки «Копировать комплект ресурсов» в мой библиотечный проект, а затем добавить все изображения без какого-либо эффекта.Изображения не могут быть найдены во время выполнения.

Затем я попытался добавить изображения на этапе сборки «Copy Bundle Resources» самих Foo и Baz;Нужно выбрать «Добавить других», так как в следующем диалоговом окне нет списка ресурсов вне текущего проекта.Это на самом деле работает, но это кажется странным способом сделать это.Ни Фу, ни Баз не должны знать о внутренностях библиотеки.Что если я захочу отправить библиотеку внешним клиентам?

Есть ли другой способ сделать это?Можно ли даже иметь изображения или другие ресурсы в файле libXXX.a?

1 Ответ

3 голосов
/ 29 января 2012

Для этого я создаю статическую библиотеку, которая создает пакет, который я включаю в основной проект приложения. Если в рабочем пространстве используется подпроект / дочерний проект, то этот пакет можно добавить таким образом, что если вы отредактируете проект библиотеки, добавив другое изображение, он будет перестроен, то есть основной проект приложения получит изменение.

Я написал об этом здесь - http://www.galloway.me.uk/tutorials/ios-library-with-resources/

Бит, который вас заинтересует, - это категория на UIImage, которую я использую для сбора изображений в комплекте библиотеки. Поэтому из кода библиотеки я использую метод, добавленный в категорию, чтобы получить изображение из правого пакета.

...