Что подкласс Вместо 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;
в качестве инициализации.
И этот хороший учебник http://www.thinkandbuild.it/how-to-build-a-custom-control-in-ios/ – MatterGoal
https://www.cocoacontrols.com/controls/dwtaglist Работает на меня. –