Что подкласс Вместо 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;
в качестве инициализации.