- Published on
SwiftUI-da Stepper
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Hammaga xush kelibsiz! Mening ismim Nick, bu β Swiftful Thinking kanali.
Oxirgi uch videoda turli Picker-lar ko'rdik. Bu videoda esa yangi mavzu β Stepper. Foydalanuvchi qiymatni bittaga oshirishi yoki kamaytirishi kerak bo'lganda Stepper juda qulay. Standart rejimda +/- bir birlik o'zgartiradi, lekin biz uni xohlagan miqdorga sozlashimiz ham mumkin.
Yangi fayl yaratish
Navigatorda o'ng tugma bosib yangi SwiftUI fayli yarating. Uni StepperBootcamp deb nomlang va Create tugmasini bosing. Canvas-da Resume bosing.
1. Standart Stepper
struct StepperBootcamp: View {
@State var stepperValue: Int = 10
var body: some View {
Stepper(
"Qiymat: \(stepperValue)",
value: $stepperValue
)
.padding(50)
}
}
+ bosilganda qiymat 1 ta oshadi, - bosilganda 1 ta kamayadi. Bu Stepper-ning eng oddiy va tez ishlatish usuli.
2. Maxsus onIncrement va onDecrement
Standart birlik o'rniga o'zimiz belgilagan miqdorga o'zgartirish uchun onIncrement va onDecrement parametrlaridan foydalanamiz:
struct StepperBootcamp: View {
@State var stepperValue: Int = 10
@State var widthIncrement: CGFloat = 0
var body: some View {
VStack(spacing: 20) {
// Standart stepper β bittadan o'zgaradi
Stepper("Qiymat: \(stepperValue)", value: $stepperValue)
// Shakl β kengligi o'zgaradi
RoundedRectangle(cornerRadius: 25)
.frame(width: 100 + widthIncrement, height: 100)
// Maxsus stepper β o'nta o'zgaradi
Stepper("Kenglik steperi") {
// + bosilganda
incrementWidth(by: 10)
} onDecrement: {
// - bosilganda
incrementWidth(by: -10)
}
}
.padding(50)
}
func incrementWidth(by amount: CGFloat) {
withAnimation(.easeInOut) {
widthIncrement += amount
}
}
}
onIncrement va onDecrement closure-larida xohlagan kod yozish mumkin β animatsiya, ma'lumotlar bazasiga yozish, boshqa o'zgaruvchilarni yangilash va hokazo.
Standart va maxsus Stepper β taqqoslash
| Standart | Maxsus (onIncrement) | |
|---|---|---|
| O'zgarish miqdori | Faqat 1 ta | Xohlagan miqdor |
| Animatsiya | Yo'q | withAnimation qo'shish mumkin |
| Qo'shimcha mantiq | Yo'q | Istalgan kod yozish mumkin |
| Yozish qulayligi | Juda oson | Biroz ko'proq kod |
To'liq kod
struct StepperBootcamp: View {
@State var stepperValue: Int = 10
@State var widthIncrement: CGFloat = 0
var body: some View {
VStack(spacing: 30) {
// Standart stepper
Stepper("Qiymat: \(stepperValue)", value: $stepperValue)
// O'zgaruvchi kenglikdagi shakl
RoundedRectangle(cornerRadius: 25)
.frame(width: 100 + widthIncrement, height: 100)
// Maxsus stepper β animatsiya bilan
Stepper("Kenglik: \(Int(widthIncrement))") {
incrementWidth(by: 10)
} onDecrement: {
incrementWidth(by: -10)
}
}
.padding(50)
}
func incrementWidth(by amount: CGFloat) {
withAnimation(.easeInOut) {
widthIncrement += amount
}
}
}
Xulosa
Bu videoda o'rgandik:
Stepperβ qiymatni+/-tugmalar bilan oshirish yoki kamaytirish komponentivalue: $bindingβ standart rejimda bittadan o'zgartiradionIncrement/onDecrementβ maxsus funksiyalar bilan istalgan miqdorga o'zgartirishwithAnimationβ stepper o'zgarishiga animatsiya qo'shish- Funksiyani alohida chiqarish (
incrementWidth) kodni tartibli saqlaydi
Stepper soni, miqdor, hajm kabi qiymatlarni o'zgartirishda qo'l keladi.
Rahmat tomosha qilganingiz uchun! Men β Nick, bu Swiftful Thinking. Keyingi videoda ko'rishamiz!