Интерфейсный Разработчик: Выберите СМИ, основанные на цели - PullRequest
4 голосов
/ 07 ноября 2010

В XCode я использую цели, чтобы выпустить несколько версий приложений, которые разделяют некоторый базовый код и имеют тенденцию иметь различную графику.

то есть .Притворяюсь, что у меня есть цель JOHN и цель DOE.Я мог бы добавить разные изображения с точным именем example.png в комплект, и на каждое из них был нацелен соответственно.Код не требует каких-либо изменений таким образом.

UIImageView *image = [UIImageView alloc] initWithImage:[UIImage imageNamed:@"example.png"]];

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

NSString *imageName;

#ifdef JOHN
imageName = @"johnExample.png";
#else
imageName = @"doeExample.png";
#endif
UIImageView *image = [UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];

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

Проблема в следующем:

При работе с файлами перьев, Interface Builder просто загружает example.png в случайном порядке.Так что, если я работаю над целью JOHN, досадно, что IB просто решил загрузить example.png из цели DOE.

Есть ли способ для Interface Builder загружать носители на основе цели?

Ответы [ 3 ]

1 голос
/ 27 января 2011

Просто чтобы закрыть этот вопрос, ответ: нет .

По состоянию на январь '11, вы не можете загружать мультимедиа на основе цели в Интерфейсном Разработчике, но вы можете использовать некоторые обходные пути, такие как Digital Robot и мое собственное описание в указанном вопросе.

0 голосов
/ 20 февраля 2013

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

При добавлении цели в проект в xcode она создает подпапку в файловой системе. Есть одна подпапка для каждого тарагта. Насколько я понимаю, основная идея состоит в том, что все обычно используемые файлы находятся на верхнем уровне в главном каталоге проекта, а те, которые являются индивидуальными для каждой цели, находятся в соответствующем каталоге.

(немного похоже на локализованные версии файлов.)

Таким образом, вы можете поместить изображение Джона как example.png в / project / john и изображение Doe как example.png в / project / doe. Вы должны дважды проверить, что правильные версии каждого изображения включены в настройки сборки для каждой из целей соответственно. (Копировать Boundle Resources) При этом «example.png» включается только один раз в рамку. Произвольная загрузка одного или другого изображения больше не должна происходить, хотя в коде вы называете это «example.jpg».

0 голосов
/ 25 января 2011

почему бы не задать это в начале кода

#ifdef JOHN
#define APP @"john"
#elseif DOE
#define APP @"doe"
#endif

и затем, каждый раз, когда вы хотите использовать это, вы можете иметь ...

imagename = [NSString stringWithFormat:@"%@Example.png", APP];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...