Animatsiya egri chiziqlari


ULASHISH

SwiftUI animatsiyalar: animatsiya egri chiziqlari

Harakatni shakllantirish uchun .easeIn, .easeOut, .easeInOut va .linear kabi vaqt funksiyalarini tanlang.


Sintaksis

Vaqt egri chiziqlari: withAnimation(.easeInOut(duration: 1)) { state = ... }.

Tezlanishni o‘zgartirish uchun .easeIn, .easeOut, .easeInOut yoki .linear ni tanlang.


EaseIn va easeOut

Nuqtani turli egri chiziqlar bilan harakatlantirish uchun tugmalarni bosing. .easeIn sekin boshlanib, tezlashadi; .easeOut esa tez boshlanib, sekinlashadi.

Misol

import SwiftUI

struct CurvesDemo: View {
  @State private var x: CGFloat = 0
  var body: some View {
    VStack(spacing: 12) {
      HStack { Circle().frame(width: 24, height: 24).offset(x: x); Spacer() }
      HStack(spacing: 12) {
        Button("EaseIn") { withAnimation(.easeIn(duration: 1)) { x = 240 } }
        Button("EaseOut") { withAnimation(.easeOut(duration: 1)) { x = 0 } }
      }
    }
    .padding()
  }
}
import SwiftUI

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

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

Misolni ishga tushirish »

Yuqoridagi misolda nuqta .easeIn va .easeOut yordamida turli egri chiziqlar bilan harakatlanadi.



Linear va easeInOut

O‘zgarmas tezlikdagi (.linear) harakatni silliq tezlashib/sekinlashadigan (.easeInOut) harakat bilan taqqoslang.

Misol

import SwiftUI

struct CurvesCompareDemo: View {
  @State private var go = false
  var body: some View {
    VStack(spacing: 16) {
      HStack { Circle().frame(width: 16, height: 16).offset(x: go ? 240 : 0); Spacer() }
        .animation(.linear(duration: 1), value: go)
      HStack { Circle().frame(width: 16, height: 16).offset(x: go ? 240 : 0); Spacer() }
        .animation(.easeInOut(duration: 1), value: go)
      Button(go ? "Reset" : "Animate") { go.toggle() }
    }
    .padding()
  }
}
import SwiftUI

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

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

Misolni ishga tushirish »

Yuqoridagi misolda nuqta .linear va .easeInOut yordamida turli egri chiziqlar bilan harakatlanadi.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!