2011-02-02 3 views
16

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

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

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

С какого места?

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

Я просто немного смущен, куда идти.

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

ответ

23

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

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

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

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

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

Таким образом, единственный способ обработки пользовательских подклассов в настоящее время - использование UIView в IB и установка поля «Пользовательский класс» в Идентификационный инспектор на имя вашего пользовательского класса. Таким образом, у вас есть представление, которое вы можете развернуть и размер.В интерфейсе Builder это просто прямоугольник, при запуске вашего приложения XIB фактически десериализует это представление для вашего пользовательского класса.

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

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

1

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

+0

И этот хороший учебник http://www.thinkandbuild.it/how-to-build-a-custom-control-in-ios/ – MatterGoal

+0

https://www.cocoacontrols.com/controls/dwtaglist Работает на меня. –

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