Модификаторы представления SwiftUI для стилизации Label и Button
Статья посвящена созданию кастомных стилей для кнопок (Button) и подписей (Label) в SwiftUI, включая адаптивный стиль подписи, который переключается на вертикальную компоновку для компактных горизонтальных классов размеров, и кастомный стиль кнопки в форме капсулы с заливкой жёлтым цветом и моноширинным шрифтом. Эти стили можно применять к представлениям с помощью модификаторов .labelStyle и .buttonStyle. Однако создание расширений (extensions) для LabelStyle и ButtonStyle, позволяющих использовать более компактную форму модификатора, встречается реже. Для решения этой задачи статья предлагает расширить ButtonStyle и LabelStyle, подобно тому, как Apple определяет встроенные стили. Это включает добавление статического свойства или функции к расширению, которая возвращает экземпляр кастомного стиля. Например, стиль кнопки-капсулы может быть расширен статическим свойством capsule, которое возвращает экземпляр CapsuleButtonStyle. Это позволяет применять стиль с помощью компактной формы .buttonStyle(.capsule). Если кастомный стиль имеет параметры, например, настраиваемый цвет, расширение можно модифицировать, включив функцию, которая принимает параметр и возвращает экземпляр кастомного стиля. Это позволяет применять стиль с параметром, например, .buttonStyle(.capsule(.orange)). Статья содержит примеры расширения ButtonStyle и LabelStyle для создания удобных кастомных стилей.
.labelStyleи.buttonStyle. Однако создание расширений (extensions) дляLabelStyleиButtonStyle, позволяющих использовать более компактную форму модификатора, встречается реже. Для решения этой задачи статья предлагает расширитьButtonStyleиLabelStyle, подобно тому, как Apple определяет встроенные стили. Это включает добавление статического свойства или функции к расширению, которая возвращает экземпляр кастомного стиля. Например, стиль кнопки-капсулы может быть расширен статическим свойствомcapsule, которое возвращает экземплярCapsuleButtonStyle. Это позволяет применять стиль с помощью компактной формы.buttonStyle(.capsule). Если кастомный стиль имеет параметры, например, настраиваемый цвет, расширение можно модифицировать, включив функцию, которая принимает параметр и возвращает экземпляр кастомного стиля. Это позволяет применять стиль с параметром, например,.buttonStyle(.capsule(.orange)). Статья содержит примеры расширенияButtonStyleиLabelStyleдля создания удобных кастомных стилей.