Статьи

Как объединить с SwiftUI, чтобы сделать лучшие приложения

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

Его декларативный подход противоречит обязательному, который разработчики iOS, включая нас, использовали до iOS 13. Неудивительно, что они взволнованы! Это устраняет множество сложностей в процессе построения пользовательского интерфейса.

Представляя Combine, Apple сделала первые шаги в направлении функционально-реактивного программирования (FRP), которое, как ожидается, станет популярным в ближайшие годы. Apple делает успехи. Для конечных пользователей это означает, что разработчики быстрее выполнят их требования.

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


Вам также может понравиться: 
Как запускать тесты Swift UI с помощью Mock API Server

SwiftUI

Apple  определяет  SwiftUI как новый способ создания пользовательских интерфейсов для платформ Apple, используя преимущества Swift.

Другое возможное определение для SwiftUI состоит в том, что это основа для создания пользовательских интерфейсов в декларативном стиле программирования с использованием Swift в форме  предметно-ориентированного языка  (DSL).

Как SwiftUI упрощает построение пользовательского интерфейса

Сегодня в подавляющем большинстве случаев построение пользовательского интерфейса включает использование Interface Builder, в котором вы устанавливаете компоненты пользовательского интерфейса и их расположение относительно друг друга. Затем эти компоненты  привязываются к коду  с помощью Outlets, Actions и т. Д. Таким образом, пользовательский интерфейс и его поведение по существу создаются в двух отдельных местах, что само по себе не очень удобно.

Альтернативой этому является создание пользовательского интерфейса в коде. Хотя на данный момент это еще более сложная задача. Например, вот как выглядит построение кнопок:

Как видно из приведенного выше фрагмента кода, необходимо учитывать множество нюансов:

  • Вы должны установить угловой радиус для кнопки на ее CALayer вместо самой кнопки.
  • Чтобы установить событие onclick, вам нужно создать селектор, и чтобы указать   там функцию hello () , вы устанавливаете   атрибут @objc для кнопки. 
  • Еще одна вещь, с которой вы должны быть знакомы, это создание ограничений.

Наряду со всеми трудностями, вы можете увидеть результаты только после запуска приложения.

 Для сравнения, вот как вы создаете кнопку в SwiftUI:

Преимущество декларативного программирования SwiftUI состоит в том, что вы описываете желаемый результат, а не императивный подход, когда вам нужно установить последовательность конкретных действий для получения желаемого результата.

Как работает SwiftUI

Как уже упоминалось выше, SwiftUI использует  DSL . Что именно является предметно-ориентированным языком? Это так называемый доменный язык, который позволяет описывать примитивы определенного конкретного домена на основе языка высокого уровня (в нашем случае это Swift). Затем с помощью этих примитивов решаются задачи, специфичные для предметной области. По сути, новый язык строится на основе старого.

В приведенном выше примере такими примитивами являются Button и Text.

Чтобы синтаксис SwiftUI был максимально простым и понятным, в Swift 5.1 были внесены некоторые изменения.

Вот некоторые из этих изменений:

  • Построители функций  [SE-XXXX]

Благодаря этому дополнению, такой синтаксис стал возможным:


Джава