Найти в Дзене
Используем SwiftData + @Query: Базовая настройка модели и запросов
Пример: Создаем модель Task и отображаем список с автоматическим обновлением. import SwiftData @Model final class Task { var title: String var isCompleted: Bool init(title: String, isCompleted: Bool = false) { self.title = title self.isCompleted = isCompleted } } struct TaskListView: View { @Query private var tasks: [Task] @Environment(\.modelContext) private var modelContext var body: some View { List { ForEach(tasks) { task in Text(task.title) } .onDelete(perform: deleteTasks) } } private func deleteTasks(_ indexSet: IndexSet) { for index in indexSet { modelContext...
17 часов назад
Используем .visualEffect() + GeometryProxy – Динамические искажения
Используем .visualEffect() + GeometryProxy – Динамические искажения Деформация на основе геометрии: struct WarpEffectView: View { var body: some View { Text("Искажение") .visualEffect { content, proxy in content.scaleEffect(proxy.size.width / 200) } } } Фишка: Реакция на изменение размера. Не бл
2 дня назад
⚡️ Друзья, максимальный репост ⚡️ Мы наконец закончили видеокурс по основам Swift, и он полностью доступен на всех платформах (VK, YouTube, RuTube и Дзен) абсолютно бесплатно 💪🏻. И как будто этого мало, мы сразу начинаем публиковать следующий видеокурс по основам SwiftUI 🥳 Будем чертовски признательны, если вы поставите лайк под этим постом и пролайкаете все наши видео, чтобы они были первыми при выдаче и наш огромный 🥵 адский труд по съемке и монтажу не пропал за зря.
4 дня назад
Что такое кастомная TabBar с ZStack
Что такое кастомная TabBar с ZStack Пример: Своя панель вкладок поверх контента. struct CustomTabBarView: View { @State private var selectedTab = 0 var body: some View { ZStack(alignment: .bottom) { // Контент TabView(selection: $selectedTab) { Color.red.tag(0) Color.blue.tag(1) } // Кастомный TabBar HStack { Button("Красный") { selectedTab = 0 } Button("Синий") { selectedTab = 1 } } ...
5 дней назад
Используем .rotation3DEffect() – Вращение в пространстве
Используем .rotation3DEffect() – Вращение в пространстве Объемные трансформации: struct 3DRotationView: View { @State private var angle: CGFloat = 0 var body: some View { Text("3D") .rotation3DEffect(.degrees(angle), axis: (x: 1, y: 1, z: 0)) .onTapGesture { angle += 45 } } } Применение: Анимации переворота...
1 неделю назад
Используем .projectionEffect() – 3D-трансформации
Используем .projectionEffect() – 3D-трансформации Простые 3D-эффекты: struct ProjectionView: View { var body: some View { Text("3D") .projectionEffect(.init(.init(rotationAngle: .pi/6)) } } Ограничение: Только простые преобразования. Не благодарите)
1 неделю назад
Используем .compositingGroup() – Группировка эффектов
Используем .compositingGroup() – Группировка эффектов Изоляция модификаторов: struct CompositingView: View { var body: some View { Text("SwiftUI") .shadow(radius: 5) .compositingGroup() .opacity(0.5) } } Разница: Тень тоже полупрозрачна. Не благодарите)
1 неделю назад
Используем .blendMode() – Режимы наложения
Используем .blendMode() – Режимы наложения Эффекты смешивания цветов: struct BlendModeView: View { var body: some View { ZStack { Circle().fill(.red).frame(width: 100) Circle().fill(.blue).frame(width: 100).blendMode(.screen) } } } Варианты: .multiply, .overlay, .hardLight. Не благодарите)
2 недели назад
Используем .colorInvert() – Инверсия цветов
Используем .colorInvert() – Инверсия цветов Обратное отображение палитры: struct InvertedColorView: View { var body: some View { Text("Инверсия") .foregroundColor(.white) .padding() .background(.blue) .colorInvert() } } Результат: Белый текст на оранжевом. Не благодарите)
2 недели назад
Используем .drawingGroup() – Оптимизация рендеринга
Используем .drawingGroup() – Оптимизация рендеринга Оффсетный рендеринг сложных view: struct ComplexDrawingView: View { var body: some View { ZStack { ForEach(0..<100) { _ in Circle().fill(.blue) } } .drawingGroup() } } Эффект: Ускорение производительности. Не благодарите)
3 недели назад
Используем .alignmentGuide() – Кастомное выравнивание
Используем .alignmentGuide() – Кастомное выравнивание Переопределение направляющих: struct CustomAlignmentView: View { var body: some View { HStack(alignment: .custom) { Text("Текст").alignmentGuide(.custom) { $0[.bottom] } Circle().frame(width: 50) } } } extension VerticalAlignment { private struct CustomAlignment: AlignmentID { static func defaultValue(in context: ViewDimensions) -> CGFloat { context[...
3 недели назад