2010-06-18 2 views
3

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

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

alt text

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

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

ответ

0

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

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

UIBarButtonItem-Generator @ GitHub

1

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

+1

Не удалось изменить свой пост (проклинающих вас, 2000 респ!), но я верьте, что это будет полезной ссылкой для включения в ваш пост: http://three20.info/style/overview –

8

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

+0

Не знал, что, удивительный –

1

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

0

Любой векторный рисунок приложение может работать, но я бы также рассмотреть вопрос о POVRAY, что позволяет создать в C-подобных сценариев 3D язык, а затем экспортировать любой размер пикселя вы выбираете.

http://povray.org

0

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

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

self.backgroundImage =image; 

}

наконец сохранить то же изображение с различным разрешением С @ 2x в конце

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