Какой у вас опыт работы с SwiftUI?

Ответ

Да, есть практический опыт разработки на 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'а — просто небо и земля, ядрёна вошь!