Ответ
Да, есть практический опыт разработки на SwiftUI.
Основные компетенции:
- Декларативный UI: Создание интерфейсов с использованием модификаторов и композиции
View. - Управление состоянием: Работа с
@State,@Binding,@StateObject,@ObservedObject,@EnvironmentObject. - Навигация: Использование
NavigationStack,NavigationLink,.sheet,.fullScreenCover. - Анимации: Применение модификаторов
.animation()иwithAnimation. - Интеграция: Встраивание SwiftUI в UIKit через
UIHostingControllerи UIKit в SwiftUI с помощьюUIViewRepresentable/UIViewControllerRepresentable.
Пример кода (Toggle с состоянием):
struct ContentView: View {
@State private var isToggleOn = false
var body: some View {
VStack {
Toggle("Включить", isOn: $isToggleOn)
.padding()
Text(isToggleOn ? "Активно" : "Неактивно")
.foregroundColor(isToggleOn ? .green : .gray)
}
}
}
Почему SwiftUI? Фреймворк обеспечивает более быструю итеративную разработку за счет live preview, реактивной модели данных и сокращения boilerplate-кода по сравнению с UIKit.
Ответ 18+ 🔞
Ну, слушай, а что ты хотел-то? Конечно, есть, блядь, практический опыт на SwiftUI! Не вчера родился, сука.
Что я там умею, блядь:
- UI по-декларативному: Это ж святое, бля. Не как в том старом UIKit'е, где надо было всё вручную расставлять, а просто пишешь, что должно быть, и оно, сука, появляется. Модификаторы там всякие, композиция
View— красота, ёпта. - Состояние, блядь, управлять: Ну это вообще основа основ.
@State,@Binding,@StateObject,@ObservedObject,@EnvironmentObject— я их как свои пять пальцев, блядь, знаю. Чтобы всё само обновлялось, когда данные меняются, а не ты вручную всё перерисовываешь, как дурак. - Навигация:
NavigationStack,NavigationLink,.sheet,.fullScreenCover— ну, стандартный набор, чтобы пользователя по приложению водить, а не оставлять его на одном экране, как овоща. - Анимации: Ну,
.animation(),withAnimation— чтобы не просто моргнуло, а красиво, с душой, блядь. Иногда, правда, такую анимацию захочешь, что проще на UIKit вернуться, но в основном норм. - Интеграция, сука: Понятное дело, что не всё ещё переписано на SwiftUI. Поэтому
UIHostingController, чтобы SwiftUI в старый проект впихнуть, иUIViewRepresentableсUIViewControllerRepresentable, чтобы какой-нибудь древний, но нужный кусок из UIKit внутрь запихнуть. Без этого никуда.
Вот, смотри, простой пример, чтоб не на словах:
struct ContentView: View {
@State private var isToggleOn = false // Вот эта переменная, блядь, и есть состояние
var body: some View {
VStack {
Toggle("Включить", isOn: $isToggleOn) // Связываем тоггл с состоянием
.padding()
Text(isToggleOn ? "Активно" : "Неактивно") // Текст сам меняется, ёпта!
.foregroundColor(isToggleOn ? .green : .gray)
}
}
}
А почему SwiftUI, спрашиваешь? Да потому что, блядь, разработка в разы быстрее! Live preview — это же просто волшебство: написал код и сразу видишь, что получилось, а не ждёшь, пока проект скомпилируется и запустится. Модель реактивная — ты данные поменял, а интерфейс сам подтянулся, не надо каждый раз руками всё обновлять. И кода этого boilerplate'ного, однообразного, как говна за баней, — в разы меньше. После UIKit'а — просто небо и земля, ядрёна вошь!