skip to content
Logo Saturngod

Disable Animation in SwiftUI

/ 1 min read

Swift မှာ withAnimation နဲ့ က animation တော်တော်များများကို အလိုအလျောက် လုပ်ပေးပါတယ်။ သို့ပေမယ့် မလိုအပ်သည့် နေရာတွေကိုပါ animation လုပ်သွားတယ်။ ဥပမာ Text changes တွေကို animation လုပ်သွားသည့် အခါမှာ ကြည့်ရတာ အဆင်မပြေတော့ပါဘူး။

အဲဒီ အခါမှာ ပိတ်လို့ရသည့် နည်းလမ်းက ၂ ခု ရှိပါတယ်။

.animation(nil,value: UUID())

နဲ့ နောက် တစ်ခု က

.transaction { transaction in
//if there is no animation, transaction value should be nil
transaction.animation = nil
}

ရှိပါတယ်။ ကျွန်တော်ကတော့ အဆင်ပြေအောင် ၂ ခု လုံးကို သုံးလိုက်တယ်။

struct NoAnimationModifier: ViewModifier {
func body(content: Content) -> some View {
content
.animation(nil,value: UUID())
.transaction { transaction in
transaction.animation = nil
}
}
}
extension View {
func noAnimation() -> some View {
modifier(NoAnimationModifier())
}
}

ပြီးရင် ကျွန်တော်တို့ animation မဖြစ်ချင်သည့် Text မှာ noAnimation() ဆိုပြီး သုံးလို့ရပါပြီ။

Text("Title")
.font(.footnote)
.noAnimation()