Кнопка в SwiftUI: стили, настройки и лучшие практики
Кнопки — один из ключевых элементов взаимодействия в любом приложении. SwiftUI предлагает гибкий способ их создания, позволяя легко изменять внешний вид и поведение. В этой статье мы разберем стандартные и кастомные стили кнопок, а также лучшие практики их использования.
🔹 Создание базовой кнопки
Создать кнопку в SwiftUI можно буквально в одну строку:
Если кнопка содержит иконку, можно использовать SF Symbols:
А для пользовательских изображений:
🎨 Использование стандартных стилей кнопок
SwiftUI предлагает несколько встроенных стилей:
Доступные варианты .buttonStyle:
- .automatic — стиль по умолчанию, который SwiftUI выбирает автоматически в зависимости от платформы и контекста.
- .borderless — кнопка без границ, часто используется в списках или текстовых кнопках.
- .bordered — стандартная кнопка с рамкой, подходящая для обычных действий.
- .borderedProminent — яркая кнопка с акцентной заливкой, идеально подходит для ключевых действий (например, кнопка «Купить»).
Формы .buttonBorderShape:
- .automatic - SwiftUI автоматически выбирает форму границы, соответствующую контексту.
- .capsule - закругленная кнопка в виде капсулы, часто используется для главных действий.
- .circle - кнопка в форме круга, удобна для иконок или действий, например, кнопка «+» для добавления.
- .roundedRectangle(radius:) - прямоугольная кнопка со скругленными углами, где можно задать радиус скругления вручную.
🎭 Роли кнопок (Button Roles)
SwiftUI позволяет обозначать роль кнопки, чтобы система автоматически применяла стилистические особенности:
Доступные роли:
- .destructive — красная кнопка для критических действий
- .cancel — кнопка отмены
✨ Создание кастомного стиля кнопки
Если стандартные стили вам не подходят, можно создать свой:
Применение стиля:
Чтобы добавить автодополнение в Xcode, можно расширить ButtonStyle:
Теперь стиль можно применять так:
✅ Лучшие практики при работе с кнопками в SwiftUI
🔹 Используйте Button, а не TapGesture, чтобы автоматически поддерживать доступность.
🔹 Применяйте системные стили (.borderedProminent, .capsule) для лучшего UI/UX.
🔹 Роли кнопок (.destructive, .cancel) делают интерфейс интуитивно понятным.
🔹 Создавайте переиспользуемые стили кнопок через ButtonStyle.
🔹 Избегайте избыточных эффектов, если это не улучшает пользовательский опыт.
🔥 Заключение
SwiftUI предоставляет мощные инструменты для работы с кнопками — от простых стандартных вариантов до полностью кастомных стилей и взаимодействий. Используйте встроенные API, создавайте переиспользуемые компоненты и следуйте лучшим практикам, чтобы сделать интерфейс удобным и интуитивным.