MaterialForm

Бесплатно
Открытый исходный код
iOS

Сайт: github.com/GirAppe/MaterialForm

MaterialForm — компонент текстового поля, разработанный для реализации интерфейсных элементов ввода в стиле Material Design для UIKit на платформах iOS и tvOS (iOS 10+, tvOS 10+). Он предназначен для унификации поведения и визуального представления полей ввода в нативных приложениях, сочетая требования к доступности, управлению состояниями и адаптивности к различным размерам экранов и сценариям взаимодействия на мобильных и телевизионных устройствах.

Компонент возник как ответ на потребность разработчиков в готовом, согласованном решении для ввода текста, которое соблюдает принципы Material Design и при этом интегрируется с API UIKit. В случае недостатка специфической документации по конкретной реализации под тем же названием, описание ниже обобщает ожидаемую функциональность и типичные архитектурные решения, применяемые для подобных компонентов в экосистеме iOS/tvOS.

  • Визуальные состояния: поддержка стандартных состояний поля ввода — нормальное, фокус, ошибка и отключено — с возможностью кастомизации цвета, толщины подчеркивания и поведения плейсхолдера.
  • Подписи и подсказки: встроенная плавающая метка (floating label), статические и динамические подсказки под полем, а также отображение сообщений об ошибке и валидации.
  • Валидация и форматирование: возможность подключения кастомных валидаторов, масок ввода и форматтеров для чисел, дат и специальных форматов, с триггером проверки по событию окончания редактирования или в реальном времени.
  • Интеграция с UIKit: совместимость с UITextField/UITextView, поддержка автолейаута через Auto Layout, адаптация к интерфейсным элементам UIKit и возможности использования через Interface Builder или программно.
  • Доступность: соблюдение рекомендаций по доступности — VoiceOver-метки, управляемые фокусы, контрастность состояний и поддержка динамического размера шрифтов (Dynamic Type).
  • Кастомизация визуального стиля: параметры для шрифтов, цветов текста и меток, иконок состояния (например, индикатор очистки или переключатель видимости пароля) и отступов.
  • Поведение клавиатуры и ввода: настройка типа клавиатуры, клавиш действий, автозаполнения, отключения автокоррекции и управления первой- и следующей-ответственностью при работе с несколькими полями.
  • Поддержка нескольких вариантов содержимого: однострочные и многострочные режимы, режимы с ограничением длины и автоматическим переносом текста для полей заметок или комментариев.
  • Анимации и переходы: реализация плавных анимаций при смене состояния метки, появлении/скрытии сообщений об ошибке и изменении высоты в многострочных режимах.
  • Производительность и надежность: оптимизация для работы в списках и таблицах, повторное использование представлений (reuse) и минимизация расходов при массовом создании компонентов в интерфейсах с большим количеством полей.
Подробнее