@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.
Почитайте код, возможно, пригодится.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы