Hello, World! Меня зовут Денис. Я IOS разработчик, пишу приложения для App Store. Хочу поделиться своим небольшим опытом на UIKit и SwiftUI.
Первый запуск
На WWDC19 Apple предоставила декоративный фреймворк SwiftUI. Новый фреймворк позволяет уменьшать времени на написание UI-составляющей своих приложений.
Пробежимся по
UIKit
SwiftUI
Отличия между фреймворками
Возможно использовать UIKit в SwiftUI?
Что такое фреймворк UIKit?
UIKit - это фреймворк, позволяющий создавать пользовательские интерфейсы (UI), которые могут обрабатывать события касания и входные данные, управляя взаимодействиями между пользователем, системой и вашим приложением. UIKit разработан и выпущен на основе языка Objective-C. У него есть архитектуры MVC/MVVM/ MVP
UIKit можно создавать несколькими способами
Использовать конструктор интерфейса. Interface Builder интегрирован в Xcode и позволяет редактировать
.storyboard.xibПодход, ориентированный на код, при котором представления и ограничения компоновки определяются в Swift

Плюсы/минусы
+ Привычен и стабилен
+ Свобода действий над UI элементами
- Сложные UI элементы
Что такое фреймворк SwiftUI?
SwiftUI - фреймворк, который позволяет вам проектировать и разрабатывать пользовательские интерфейсы декларативно, с меньшим количеством кода. Был впервые выпущен в 2019 году с версией 13 iOS SDK.
Создание
Xcode отображает визуальный редактор с любым файлом, содержащим представление SwiftUI, отображая живое представление создаваемого вами представления.

Плюсы/минусы
+ Прост в освоении
+ Можно смешивать с UIKit через UIHostingController
+ SwiftUI больше не нуждается в Interface Builder, был заменен Canvas
+ HStack, VStack, ZStack
- Еще молодой фреймворк
- Поддержка с
1. iOS 13.0+
2. iPadOS 13.0+
3. macOS 10.15+
4. Mac Catalyst 13.0+
5. tvOS 13.0+
6. watchOS 6.0+
Отличия между фреймворками
SwiftUI - поддержка собственной иерархии представлений, а затем платформа заботиться/обновляет данные на экране (canvas)
UIkit - поддерживает собственное состояние, код - синхронизацию этого состояния
Возможно использовать UIKit в SwiftUI?
UIViewRepresentable - это протокол, предоставляемый фреймворком SwiftUI. Используя этот протокол, можно обернуть экземпляр представления UIKit, чтобы его можно было отображать с помощью SwiftUI. Пример:

Будущее
На рынке РФ пока мало проектов/компаний, которые перешли с UIKit на SUI.
Новое поколение iOS-разработчиков все чаще начинает свой путь именно со SwiftUI, а бывшие дизайнеры, благодаря данной технологии Apple, становятся еще и разработчиками.
Мой первый проект написан на SUI. Для разнообразия изучаю UIKit.
