O‘tishlar


ULASHISH

SwiftUI animatsiyalar: o‘tishlar (transitions)

View’lar qo‘shilayotganda/olib tashlanayotganda ularni .transition va withAnimation yordamida animatsiya qiling.


Sintaksis

O‘tish: qo‘shiladigan/olib tashlanadigan view’ga .transition(.opacity) qo‘llanadi.

O‘tishni animatsiya qilish uchun state o‘zgarishini withAnimation ichiga o‘rang.


Shaffoflik + masshtab o‘tishi

View’ni qo‘shish/olib tashlash uchun tugmani bosing. Matn .opacity va .scale birlashtirilgan o‘tishdan foydalanadi.

Misol

import SwiftUI

struct TransitionDemo: View {
  @State private var show = false
  var body: some View {
    VStack(spacing: 12) {
      Button(show ? "Hide" : "Show") {
        withAnimation(.easeInOut) { show.toggle() }
      }
      if show {
        Text("Hello")
          .padding(12)
          .background(.blue.opacity(0.1))
          .cornerRadius(8)
          .transition(.opacity.combined(with: .scale))
      }
    }
    .padding()
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { TransitionDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Yuqoridagi misolda matn .opacity va .scale birlashtirilgan o‘tishdan foydalanadi.



Asimmetrik o‘tishlar

View paydo bo‘lishi va yo‘qolishini alohida sozlash uchun .asymmetric(insertion:removal:) dan foydalaning.

Misol

import SwiftUI

struct AsymmetricTransitionDemo: View {
  @State private var show = false
  var body: some View {
    VStack(spacing: 12) {
      Button(show ? "Hide" : "Show") {
        withAnimation(.easeInOut) { show.toggle() }
      }
      if show {
        Text("Panel")
          .padding(12)
          .frame(maxWidth: .infinity)
          .background(.green.opacity(0.15))
          .cornerRadius(8)
          .transition(.asymmetric(insertion: .move(edge: .bottom).combined(with: .opacity),
                                  removal: .move(edge: .top).combined(with: .opacity)))
      }
    }
    .padding()
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { AsymmetricTransitionDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Yuqoridagi misolda panel asimmetrik o‘tishdan foydalanadi: qo‘shilganda pastdan, olib tashlanganda esa yuqoridan harakatlanadi.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!