- Published on
SwiftUI-da DatePicker
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Hammaga xush kelibsiz! Mening ismim Nick, bu β Swiftful Thinking kanali.
Oldingi ikki videoda Picker va ColorPicker ko'rdik. Bu videoda esa DatePicker bilan tanishamiz β foydalanuvchiga sana va vaqt tanlash imkonini beradigan tayyor SwiftUI komponenti.
Yangi fayl yaratish
Navigatorda o'ng tugma bosib yangi SwiftUI fayli yarating. Uni DatePickerBootcamp deb nomlang va Create tugmasini bosing. Canvas-da Resume bosing.
Oddiy DatePicker
struct DatePickerBootcamp: View {
@State var selectedDate: Date = Date()
var body: some View {
DatePicker(
"Sana tanlang",
selection: $selectedDate
)
.padding()
}
}
Date() β hozirgi sana va vaqtni avtomatik oladi.
Live preview-da picker bosilganda ochiladigan taqvim ko'rinadi. Sana va vaqtni tanlash mumkin.
Accent rangini o'zgartirish
SwiftUI-dagi ko'k rang odatda accent color dan keladi. Uni .accentColor() bilan o'zgartirish mumkin:
DatePicker("Sana tanlang", selection: $selectedDate)
.accentColor(.red)
.padding()
DatePicker stillari
1. CompactDatePickerStyle β ixcham (standart)
DatePicker("Sana tanlang", selection: $selectedDate)
.datePickerStyle(CompactDatePickerStyle())
Bosilganda taqvim ochiladi. Bu standart ko'rinish.
2. GraphicalDatePickerStyle β darhol ochiq taqvim
DatePicker("Sana tanlang", selection: $selectedDate)
.datePickerStyle(GraphicalDatePickerStyle())
Taqvim darhol ekranda ko'rinadi β foydalanuvchi bosmasdan ham ko'radi.
3. WheelDatePickerStyle β g'ildirak
DatePicker("Sana tanlang", selection: $selectedDate)
.datePickerStyle(WheelDatePickerStyle())
Eski iOS uslubidagi aylanuvchan g'ildirak ko'rinishi.
Faqat sana yoki faqat vaqt ko'rsatish
displayedComponents parametri orqali nimani ko'rsatishni belgilash mumkin:
// Faqat sana
DatePicker("Sana tanlang", selection: $selectedDate, displayedComponents: .date)
// Faqat vaqt
DatePicker("Vaqt tanlang", selection: $selectedDate, displayedComponents: .hourAndMinute)
// Sana va vaqt (standart)
DatePicker(
"Sana va vaqt",
selection: $selectedDate,
displayedComponents: [.date, .hourAndMinute]
)
Diapazon cheklash β faqat ma'lum sanalar
Foydalanuvchi faqat belgilangan sanalar oralig'ini tanlashi kerak bo'lsa (masalan, tug'ilgan kun yoki uchrashuv sanasi), in: parametri ishlatiladi.
Boshlang'ich va tugash sanasini aniqlash
struct DatePickerBootcamp: View {
@State var selectedDate: Date = Date()
let startingDate: Date = Calendar.current.date(
from: DateComponents(year: 2018)
) ?? Date()
let endingDate: Date = Date()
var body: some View {
DatePicker(
"Sana tanlang",
selection: $selectedDate,
in: startingDate...endingDate,
displayedComponents: .date
)
.padding()
}
}
Bu misoldΠ°:
- Minimal sana: 2018 yil 1 yanvar
- Maksimal sana: bugun
Foydalanuvchi 2018 yildan oldingi yoki bugundan keyingi sanani tanlay olmaydi.
Eslatma:
Calendar.current.date(from:)opsional (Date?) qaytaradi.?? Date()β agar sana aniqlanmasa, bugungi sanani ishlatadi.
Amaliy misollar
// Tug'ilgan kun β faqat o'tgan sanalar
DatePicker("Tug'ilgan kun", selection: $selectedDate, in: ...Date())
// Uchrashuv β faqat kelajak sanalar
DatePicker("Uchrashuv", selection: $selectedDate, in: Date()...)
Sanani formatlash
Date ob'ektining .description xususiyati juda uzun va amaliy emas:
2024-02-08 10:26:00 +0000
Sanani chiroyli ko'rsatish uchun DateFormatter ishlatiladi:
struct DatePickerBootcamp: View {
@State var selectedDate: Date = Date()
var dateFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.dateStyle = .short // .short, .medium, .long, .full
formatter.timeStyle = .short // .none, .short, .medium, .long, .full
return formatter
}
var body: some View {
VStack(spacing: 20) {
Text("Tanlangan sana:")
Text(dateFormatter.string(from: selectedDate))
.font(.title)
DatePicker("Sana tanlang", selection: $selectedDate)
.datePickerStyle(GraphicalDatePickerStyle())
}
.padding()
}
}
dateStyle variantlari
| Stil | Ko'rinishi |
|---|---|
.short | 2/8/24 |
.medium | Feb 8, 2024 |
.long | February 8, 2024 |
.full | Thursday, February 8, 2024 |
To'liq kod
struct DatePickerBootcamp: View {
@State var selectedDate: Date = Date()
let startingDate: Date = Calendar.current.date(
from: DateComponents(year: 2018)
) ?? Date()
let endingDate: Date = Date()
var dateFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .short
return formatter
}
var body: some View {
VStack(spacing: 20) {
Text("Tanlangan:")
Text(dateFormatter.string(from: selectedDate))
.font(.title)
DatePicker(
"Sana tanlang",
selection: $selectedDate,
in: startingDate...endingDate,
displayedComponents: [.date, .hourAndMinute]
)
.datePickerStyle(GraphicalDatePickerStyle())
.accentColor(.red)
.padding()
}
}
}
Xulosa
Bu videoda o'rgandik:
DatePickerβ foydalanuvchiga sana va vaqt tanlash imkonini beradigan tayyor SwiftUI komponenti.accentColor()β picker-ning ko'k rangini o'zgartirishCompactDatePickerStyleβ ixcham, bosilganda ochiladi (standart)GraphicalDatePickerStyleβ taqvim darhol ko'rinadiWheelDatePickerStyleβ aylanuvchan g'ildirakdisplayedComponentsβ faqat sana, faqat vaqt yoki ikkalasiin: start...endβ foydalanuvchi tanlashi mumkin bo'lgan sana diapazoniDateFormatterβ sanani matn sifatida formatlash
DatePicker ko'proq tug'ilgan kun yoki uchrashuv sanasini tanlashda ishlatiladi.
Rahmat tomosha qilganingiz uchun! Men β Nick, bu Swiftful Thinking. Keyingi videoda ko'rishamiz!