Подтвердить что ты не робот

Индивидуальный контроль iPhone/iOS

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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