пользовательский элемент управления iPhone / iOS - PullRequest
16 голосов
/ 02 февраля 2011

Хотелось бы узнать, как создать собственный элемент управления iPhone с нуля или использовать существующую библиотеку или фреймворк.

Я видел библиотеку three20, а также тапку и обычаи касания, которые хороши для специализированных элементов управления iOS, таких как просмотр таблиц и т. Д., Но я говорю о создании полностью настраиваемых интерактивных элементов управления здесь.

Допустим, я хотел бы сделать регулятор циферблата похожим на тот, что в этом приложении: http://store.apple.com/us/product/H2654LL/A.

С чего бы мне начать?

  • Буду ли я создавать подкласс UIView и настраивать его?
  • Буду ли я использовать кварц 2d?
  • Могу ли я использовать OpenGL ES для рисования чего-то подобного на экране?
  • Могу ли я по-прежнему использовать IB для разработки / компоновки своего пользовательского вида?

I 'Я просто немного сбит с толку, куда идти.

Да - этот вопрос задавался и отвечался несколько раз раньше, но мне еще предстоит найти удовлетворительный ответ, который касается вышеуказанных пунктов.

Ответы [ 2 ]

23 голосов
/ 13 апреля 2011

Что подкласс Вместо UIView вы, вероятно, захотите подкласс UIControl.Этот класс имеет функциональные возможности для построения шаблона Target / Action, в котором вы можете использовать ответ на действия, созданные вашим пользовательским элементом управления.По этой конкретной причине большинство элементов UIKit, таких как кнопки и ползунки, наследуются от UIControl.

Визуализация вашего подкласса Рисование действительно зависит от того, чего вы хотите достичь, и каких частей вы хотите анимировать.Вы можете использовать изображения, рисовать с помощью кварца или OpenGL в зависимости от того, что вам нужно или что вы предпочитаете.Просто используйте технику для достижения желаемого эффекта максимально упрощенным способом.Несколько изображений могут использоваться для обработки различных состояний (нажатие и т. Д.) Или для анимации спрайта.CALayers приятно легко вращать или перемещать.

Независимо от того, какую технологию вы используете, вы, вероятно, используете входящие сенсорные события для управления анимацией.В случае управления с помощью циферблата, вы можете контролировать величину вращения, например, на основе перемещения по оси Y.

Для иллюстрации: я, например, использовал изображения, если мой элемент управления нужно было менять только при нажатии, например: просто поменять местамиизображения.Мне также нравится много использовать CALayer, который дает вам простые способы создания границ, масок, градиентов и угловых радиусов, все также легко анимируются.

Использование в Интерфейсном Разработчике С Какаона рабочем столе можно было создавать собственные палитры IB для пользовательских элементов управления.У iOS никогда не было этой функциональности, и я не думаю, что плагины IB доступны для Xcode 4.

Так что единственный способ обрабатывать пользовательские подклассы в настоящее время - это использовать UIView в IB и установить 'Custom class'в Identity Inspector к имени вашего пользовательского класса.Таким образом, у вас есть вид вы можете макет и размер.В Интерфейсном Разработчике это просто прямоугольник, когда при запуске вашего приложения XIB фактически десериализует это представление в ваш пользовательский класс.

При использовании UIControl вы получаете целевые механизмы / механизмы действия бесплатно.Таким образом, вы можете подключить события касания к любому объекту в IB, как и к любому другому стандартному элементу управления UIKit.

Одна вещь, на которую следует обратить внимание: если у вас есть пользовательские селекторы - initWith....:, они не будут вызываться.Ваш класс десериализован из XIB, поэтому вы должны использовать - initWithCoder:(NSCoder *)aDecoder; в качестве инициализации.

1 голос
/ 14 февраля 2013

Также на http://www.cocoacontrols.com/platforms/ios/controls. имеется довольно мало пользовательских элементов управления. Они с открытым исходным кодом, поэтому вы можете загружать их и играть с ними.

...