2012-04-20 3 views
1

У меня есть 3 изображения, file.png, [email protected] и [email protected]~ipad.png. Я хочу использовать [email protected] на iPhone Retina и iPad nonRetina.Использование файлов @ 2x для NonRetina iPad при наличии изображений 2x 2x ipad

Я хочу, чтобы установил изображения в построителе интерфейса. IPhone отлично работает, где я устанавливаю файл.png в xib, и он загружает файл@2x.png на Retina iPhone. Но на nonRetina iPad, [email protected]~ipad.png загружается, хотя я указал файл@2x.png.

Есть ли способ установить nonRetina iPad по умолчанию на версию @ 2x, когда версия ~ ipad не существует через построитель интерфейсов/xibs? (Мне хорошо знать, как загружать изображения с разными расширениями через код, написав пользовательский код загрузки) Есть ли какие-либо настройки или плиты, которые я могу изменить?

Я не хочу, чтобы дубликаты из того же изображения были только для обозначения их по-разному.

Спасибо.

+0

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

+0

@hypercrypt имеет ответ –

+0

@ EricS Я читал об этом тоже, и я буду изучать это, спасибо. – yuf

ответ

1

Используйте символические ссылки на пункт myImage~iPad.png по номеру [email protected]. Источник https://stackoverflow.com/a/10223119/313875

Резюме этого ответа (читай - чужой ответ на другой вопрос, пожалуйста, идти вверх голосовать их!):

Используйте ln -s [email protected] myImage~ipad.png для каждого изображения. Или используйте скрипт:

#! /bin/sh 

# Script to batch create symlinks that point ~ipad files to @2X files 

# To run: 
# Copy to the directory where the files are located 
# Enter the following at the terminal prompt: 
# bash create_ipad_image_links.txt 

# For every @2x file we find in this directory we create a symlink 

for file in *@2x.png 
do 
    echo "link: ${file//@2x/~ipad} to: $file" 
    ln -s $file ${file//@2x/~ipad} 
done 
+0

Я не знаю, будет ли компиляция со ссылками создавать две отдельные копии изображения на устройстве (я еще не пробовал). Я попытался использовать NSFileManager для создания жестких ссылок на устройстве, но кажется, что вы не можете создавать ссылки (даже не символические ссылки) с элементами пакета из-за «прав на запись» ... хотя я даже ничего не пишу. Я не говорю, что ваш ответ не будет работать, только я хочу, чтобы решение было обработано кодом моего приложения, а не во время разработки; однако это решение мне очень помогло, поэтому я буду отмечать его правильно – yuf

+0

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

+0

Привет, спасибо за помощь. Я закончил это, но я положил его в Run Script для проекта, чтобы он запускался при компиляции проекта. Кроме того, мне пришлось изменить все ссылки на 2x в ipad xibs на ~ ipad, переименовать все мои 2x-файлы в ~ ipad, а затем создать символические ссылки от ~ ipad до 2x в сценарии запуска. Оно работает! Если бы я не переименовал с 2x на ~ ipad, ipad xibs все равно пытались получить версии сетчатки, так как файл, указанный в xib, был 2x. – yuf

-1

Попробуйте создать file~ipad.png. Не-сетчатые iPads должны сначала искать этот файл.

+0

Я не хочу делать дубликаты изображений, и мне нужно, чтобы это было @ 2x, поэтому Retina iPhone будет использовать его. – yuf

+0

Вы не понимаете порядок поиска изображений. Использование изображения ~ соглашение об имени заставляет данное устройство использовать это изображение. Например, вы также можете использовать изображение ~ iphone.png AND [email protected] Ответ jrtc27 примерно эквивалентен моему, с дополнительным удобством символических ссылок вместо копий изображений. –

+0

Во-первых, я думаю, что это @ 2x ~ iphone для модификатора сетчатки сетчатки. Во-вторых, я знаю о порядке изображений. Я знаю, почему то, что я хочу сделать, не работает (я использую @ 2x на nonretina ipad, поэтому он предполагает, что я хочу использовать сетчатку на ipad и пытается найти наиболее конкретный файл, который является @ 2x ~ ipad). Я не могу создать копию, потому что это пустая трата комнаты. Я также не могу переименовать файл, потому что он нуждается в сетчатке iphone. – yuf

1

Один из способов сделать это без добавления дубликатов файлов - это назвать версию iPad [email protected]@2x.png. Затем вы можете установить версию iPad с помощью [UIImage imageNamed:@"[email protected]"]; или установить изображение на [email protected], чтобы иметь [email protected]@2x.png на сетчатке iPad и [email protected] на обычном iPad. Таким образом, нет дублирования.

+0

Проблема в том, что мне это нужно с помощью интерфейса builder/xibs, поэтому я не могу использовать imageNamed, и у меня нет никакого контроля над загрузкой какой-либо версии. Я задаю вопрос, есть ли какие-либо настройки или плиты, которые я могу настроить. Я уже запрограммировал код для обработки файлов, загруженных через imageNamed, так что @ 2x загружается, если ~ ipad не существует, но мой код не может использоваться для загрузки xib. – yuf

+0

Вот почему я сказал, что это не совсем то, что вы хотите. На самом деле, вы создаете два наконечника (один для iPhone и один для iPad)? В этом случае просто используйте 'file @ 2x.png', а не' file.png' как изображение и 'file @ 2x @ 2x.png' будет использоваться на сетчатке iPad как следует. – hypercrypt

+0

Да, у меня есть два наконечника. Я попробую! – yuf

Смежные вопросы