Как создать кнопки изображений iOS, которые хорошо масштабируются в разных разрешениях? - PullRequest
3 голосов
/ 19 июня 2010

Я столкнулся с проблемой использования UIBarButtonItem с пользовательским цветом. Похоже, все, что есть в сети, указывает на то, что единственный недостаток официальной поддержки API связан с использованием изображений. Все это прекрасно и прекрасно при разработке для устройств до iOS 4, за исключением использования нового iPhone 4. Создание образа для iPad и устройств до iOS 4 достаточно просто, но изображения, разработанные для этих устройств, выглядят абсолютно ужасно на iPhone 4. Я подозреваю, что эта проблема будет усугубляться с появлением устройств следующего поколения.

Рассмотрим пример ниже. Обратите внимание, что цветная кнопка по умолчанию выглядит красиво и плавно, но изображение iPhone 3GS выглядит ужасно. Кажется не очень масштабируемым (каламбур) включать несколько изображений для устройств с разным разрешением.

alt text

В отсутствие официального API для изменения цвета UIBarButtonItem, какие существуют стратегии для создания изображений, которые хорошо масштабируются на устройствах с различным разрешением? Эта проблема вряд ли уникальна для UIBarButtonItems, как сообщество адаптируется к другим элементам пользовательского интерфейса, которые являются растровыми? Есть ли лучшее решение для этого конкретного случая, чем использование изображения (например, использование Quartz для его рисования)?

Если возможно, приведите конкретные примеры кода.

Ответы [ 6 ]

8 голосов
/ 19 июня 2010

Вы можете перечислить любое изображение как Image@2x.png вместе с Image.png, и система выберет соответствующее изображение во время выполнения.

1 голос
/ 24 марта 2011

Попробуйте Opacity (для Mac).Нарисуйте на нем свою кнопку с векторными элементами и эффектами, и она будет выплевывать необходимый кварцевый код, чтобы воспроизвести его, изначально рисуя в вашем приложении iOS.Вы получаете поддержку Retina (@ 2x) автоматически.

1 голос
/ 19 июня 2010

Если вы посмотрите на источник для Three20 , вы увидите, как они рисуют пользовательские кнопки и формы, которые будут хорошо масштабироваться независимо от разрешения.

0 голосов
/ 12 октября 2012

У меня та же проблема с панелью навигации, поэтому решите следующее: сначала я подкласс моей панели навигации внутри этого класса - (void) drawRect: (CGRect) rect { UIImage * image = [UIImage imageNamed: @ "MyImage.png"];

self.frame=CGRectMake(0, 0, image.size.width, image.size.height);

self.backgroundImage  =image;

}

наконец сохранить то же изображение с другим разрешением С @ 2x в конце

0 голосов
/ 01 октября 2012

Может работать любое приложение для векторного рисования, но я бы также рассмотрел povray, который позволяет создавать на языке C-подобного сценария 3D, а затем экспортировать любой выбранный вами размер пикселя.*

0 голосов
/ 15 мая 2011

Прошло больше года с тех пор, как я опубликовал этот вопрос, но я столкнулся с ситуацией, когда мне хотелось это сделать, поэтому вместо того, чтобы рисовать или иным образом создавать кнопки, я решил написать приложение с открытым исходным кодомсоздать их.Это приложение использует частные API для изменения цветов объектов UIBarButtonItem, а затем использует графический контекст, чтобы сохранить их в определенном месте в файловой системе вашего компьютера.Таким образом, вы можете получить UIBarButtonItem изображения с идеальным пикселем для использования в UIToolbar s.

. Приложение создает как стандартные изображения, так и изображения с разрешением @ 2x. @ GitHub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...