Как стать автором
Обновить

Что лучше: UIKit или SwiftUI?

Время на прочтение3 мин
Количество просмотров10K

Hello, World! Меня зовут Денис. Я IOS разработчик, пишу приложения для App Store. Хочу поделиться своим небольшим опытом на UIKit и SwiftUI.

Первый запуск

На WWDC19 Apple предоставила декларативный фреймворк SwiftUI. Новый фреймворк позволяет уменьшать время на написание UI-составляющей своих приложений.

Пробежимся по

  • UIKit

  • SwiftUI

  • Отличия между фреймворками

  • Возможно использовать UIKit в SwiftUI?

  • Производительность

Что такое фреймворк UIKit?

UIKit - это фреймворк, позволяющий создавать пользовательские интерфейсы (UI), которые могут обрабатывать события касания и входные данные, управляя взаимодействиями между пользователем, системой и вашим приложением. UIKit разработан и выпущен на основе языка Objective-C.

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(элементы расположены друг над другом) - StackView

+ Абсолютная свобода и гибкость

- Еще молодой фреймворк

- Он поддерживает только iOS 13 и Xcode 11

Отличия между фреймворками

1) Чтобы код работал, вам просто нужно описать переменную body (var body: some View{}), к которой вы должны вернуть представление. Тело - ваш контейнер, в который вы добавляете все остальные вложенные представления. В теле вы должны возвращать только один элемент: текст, изображение, кнопку... — все, что поддерживает View. В другом случае компилятор выдаст ошибку

2) Основные вещи, такие как UIScrollView и UITableView также доступны, но теперь они называются ScrollView и ListView

3) Создание пользовательского интерфейса программно (без раскадровки) в UIKit значительно сложнее по сравнению с SwiftUI. UIKit известен как императивный фреймворк, который просто означает, что вы указываете, как что-то сделать

4) SwiftUI является декларативной структурой. Вы объявляете код, а на canvas происходит ваши задумки (как я называю "прямой эфир")

Возможно использовать UIKit в SwiftUI?

UIViewRepresentable - это протокол, предоставляемый фреймворком SwiftUI. Используя этот протокол, можно обернуть экземпляр представления UIKit, чтобы его можно было отображать с помощью SwiftUI. Пример:

Производительность

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

Итог

Подводя итог, SwiftUI использует совершенно иной подход к написанию кода, чем UIKit. Выбор за вами. Факт: SwiftUI понятен, легко читается и удобен в использовании. В будущем Apple начнет отказываться от UIKit.

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

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

P.S. На рынке РФ пока мало компаний, которые перешли с UIKit на SUI.

Теги:
Хабы:
Всего голосов 10: ↑1 и ↓9-8
Комментарии15

Публикации

Истории

Работа

iOS разработчик
25 вакансий
Swift разработчик
43 вакансии

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн