Приходилось ли вам повторять одни и те же модификации представлений во всем проекте SwiftUI? Создание кастомного модификатора представлений поможет вам сэкономить время и силы!
Чтобы создать собственный модификатор представления, начните с определения новой структуры, соответствующей протоколу ViewModifier
. Например, создадим модификатор представления, который сделает шрифт представления Text
жирным и курсивным:
struct BoldAndItalicModifier: ViewModifier { func body(content: Content) -> some View { content .fontWeight(.bold) .italic() } }
В этом примере функция body
принимает параметр Content
и возвращает модифицированный View
. Внутри функции мы изменяем шрифт Content
, которое обычно является представлением, переданным в модификатор.
Чтобы использовать этот модификатор в представлении, просто воспользуйтесь функцией .modifier()
и передайте в нее экземпляр модификатора:
struct ContentView: View { var body: some View { Text("Hello, World!") .modifier(BoldAndItalicModifier()) } }
Теперь текст будет отображаться жирным шрифтом и курсивом:
Кастомные модификаторы представлений или кастомные представления?
Пользовательские модификаторы представлений особенно полезны в сценариях, когда необходимо применить согласованный стиль или поведение к различным представлениям. Инкапсулируя изменения в многократно используемый модификатор, вы сможете обеспечить согласованность пользовательского интерфейса вашего приложения и сократить дублирование кода.
В отличие от этого, создание пользовательских представлений — подходящий подход, когда вам нужно определить сложный компонент многократного использования, который инкапсулирует как внешний вид, так и поведение представления. Кастомные представления идеально подходят для ситуаций, когда отдельное представление или группа представлений требуют индивидуальной компоновки, взаимодействия или сложной иерархии представлений.
Принимая решение между модификаторами пользовательских представлений и пользовательскими представлениями, учитывайте следующее:
- Возможность повторного использования: Если вам нужно применить одни и те же изменения к нескольким представлениям, пользовательский модификатор представлений — более эффективный выбор. Он позволяет применить несколько модификаций с помощью одного вызова модификатора для каждого представления.
- Последовательность: Пользовательские модификаторы представлений помогают обеспечить последовательный внешний вид и ощущение во всем приложении. Определив модификации в одном месте, вы можете легко применять их к различным представлениям, поддерживая визуальную согласованность всего пользовательского интерфейса.
- Сложность: Если ваши модификации включают в себя сложные иерархии представлений, кастомные представления могут оказаться более подходящим вариантом. Пользовательские представления позволяют инкапсулировать всю логику и внешний вид компонента, что упрощает управление сложными макетами и взаимодействиями.
В целом, кастомные модификаторы полезны для оптимизации повторяющихся модификаций и поддержания согласованности, в то время как кастомные представления идеально подходят для инкапсуляции сложных компонентов со своими макетами и взаимодействиями. Выбрав правильный подход, основанный на ваших конкретных потребностях, вы сможете улучшить организацию кода и создать более эффективный и поддерживаемый проект SwiftUI.
Создание пользовательского модификатора представления может быть чрезвычайно полезным для поддержания последовательности во всем проекте, а также для сокращения количества повторяющегося кода. Поэтому в следующий раз, когда вы обнаружите, что делаете одни и те же изменения снова и снова, попробуйте создать пользовательский модификатор представления!
← Предыдущая статья: Создание сетки представлений