Site icon AppTractor

Поваренная книга SwiftUI: создание кастомного модификатора представления

Приходилось ли вам повторять одни и те же модификации представлений во всем проекте 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.

Кастомные модификаторы представлений или кастомные представления?

Пользовательские модификаторы представлений особенно полезны в сценариях, когда необходимо применить согласованный стиль или поведение к различным представлениям. Инкапсулируя изменения в многократно используемый модификатор, вы сможете обеспечить согласованность пользовательского интерфейса вашего приложения и сократить дублирование кода.

В отличие от этого, создание пользовательских представлений — подходящий подход, когда вам нужно определить сложный компонент многократного использования, который инкапсулирует как внешний вид, так и поведение представления. Кастомные представления идеально подходят для ситуаций, когда отдельное представление или группа представлений требуют индивидуальной компоновки, взаимодействия или сложной иерархии представлений.

Принимая решение между модификаторами пользовательских представлений и пользовательскими представлениями, учитывайте следующее:

  1. Возможность повторного использования: Если вам нужно применить одни и те же изменения к нескольким представлениям, пользовательский модификатор представлений — более эффективный выбор. Он позволяет применить несколько модификаций с помощью одного вызова модификатора для каждого представления.
  2. Последовательность: Пользовательские модификаторы представлений помогают обеспечить последовательный внешний вид и ощущение во всем приложении. Определив модификации в одном месте, вы можете легко применять их к различным представлениям, поддерживая визуальную согласованность всего пользовательского интерфейса.
  3. Сложность: Если ваши модификации включают в себя сложные иерархии представлений, кастомные представления могут оказаться более подходящим вариантом. Пользовательские представления позволяют инкапсулировать всю логику и внешний вид компонента, что упрощает управление сложными макетами и взаимодействиями.

В целом, кастомные модификаторы полезны для оптимизации повторяющихся модификаций и поддержания согласованности, в то время как кастомные представления идеально подходят для инкапсуляции сложных компонентов со своими макетами и взаимодействиями. Выбрав правильный подход, основанный на ваших конкретных потребностях, вы сможете улучшить организацию кода и создать более эффективный и поддерживаемый проект SwiftUI.

Создание пользовательского модификатора представления может быть чрезвычайно полезным для поддержания последовательности во всем проекте, а также для сокращения количества повторяющегося кода. Поэтому в следующий раз, когда вы обнаружите, что делаете одни и те же изменения снова и снова, попробуйте создать пользовательский модификатор представления!

← Предыдущая статья: Создание сетки представлений

Источник

Exit mobile version