Модификаторы представления Swi... Заметка

Модификаторы представления SwiftUI для стилизации Label и Button

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