@a25

Программирование под Iphone. Изменение внешнего вида компонентов?

Есть необходимость изменить внешний вид стандартных компонентов (кнопок, табов, строк таблицы и т.п.) в соответствии с дизайном. Функционал, соответственно, должен оставаться таким же, какой он есть. Среди самых типичных изменений — кнопки произвольных форм (круглые, с тенями), внешний вид табов (например, вот такой: id843992.html). Каков общий подход в таких ситуациях? Есть пара способов, хотелось бы оценить их жизнеспособность и сложность.


1. Наследование стандартных классов и переопределение некоторых методов рисования. Проблема в том, что таких методов не нашел (вряд ли apple будет их открывать наружу, если не хочет, чтобы компоненты кастомизировали).
UPD. Уточнение вопроса. Здесь не рассматривается метод drawRect. Имелись в виду методы вроде указания заднего фона табов, изменения расположения самих вкладок табов (например, перенос их снизу вверх), изменение цвета таба и прочие, которые позволяли бы без пользовательского рисования менять его внешний вид.

2. Создание компонентов руками из UIView путем рисования внешнего вида или комбинации рисования и картинок дизайна. Здесь проблема в том, что придется еще и программировать немалый функционал (в т.ч. и анимацию).
UPD. 3. Использование метода drawRect. Насколько увидел из компонентов, созданных другими, это единственный способ. Соответственно, минус в том, что не всегда можно использовать дизайн в виде картинок (только если сочетать его с рисованием примитивов, кривых и т.п. операциями). Ну и рост сложности в зависимости от устройства компонента.


Может, есть какие-нибудь библиотеки компонентов или хотя бы подходы? Может, есть какие-то приложения с открытым кодом, где подобное реализовано?
  • Вопрос задан
  • 3380 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kaapython
Я бы начал с поиска компонентов, похожих на необходимые, на cocoacontrols.
Ответ написан
dals
@dals
Некоторые типы кастомизаций (например, в UISwitch поменять надписи со стандартных на какие-нибудь свои, поменять подложку) не так давно подпадали под Private API, с соответствующими последствиями.
Erica Sadun писала (и, возможно, пишет) интересные вещи в этом плане, с разбором полетов.
Что касается идеи… вот вам тот же самый «свой» гибкий UISwitch.
Почитайте код, возможно, пригодится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы