SwiftUI-də Form — iOS-da Settings dizaynına uyğun, strukturlu parametr və məlumat daxiletmə interfeysləri qurmaq üçün konteyner komponentidir. Komponent idarəetmə elementlərini sistem boşluqları və stilləri ilə avtomatik bölmələrdə qruplaşdırır, proqramçını ayırıcıların və rənglərin əl ilə tənzimlənməsindən azad edir. Apple Developer Documentation (2025)-ə görə, Form görünüşü hər platformaya uyğunlaşdırır — iOS-da grouped-cədvəllərdən macOS-da standart siyahılara qədər — vahid API-ni qoruyaraq.
Əsas məqamlar
Form məlumat daxiletmə formaları və parametrlər ekranları yaratmaq üçün nəzərdə tutulmuş SwiftUI-nin ixtisaslaşdırılmış konteyneridir. O, List davranışını miras alır, lakin platforma stilləri əlavə edir: iOS-da Form bölmələrinin yuvarlaq küncləri olan grouped-cədvəl kimi, macOS-da isə çekboks və idarəetmə elementləri olan standart sistem siyahısı kimi göstərilir.
VStack və HStack ilə əl ilə düzülmədən fərqli olaraq, Form elementlər arasında boşluqları avtomatik yerləşdirir, ayırıcılar əlavə edir və görünüşü sistem mövzusuna — açıq və ya tünd — uyğunlaşdırır. Proqramçı yalnız məntiqi strukturu təsvir edir: qruplaşdırma üçün Section və içəridə idarəetmə elementləri. Forma konkret platformada Picker, Toggle və ya Stepper-i vizual olaraq necə yerləşdirəcəyini özü qərar verir.
Form bütün standart SwiftUI daxiletmə elementlərini dəstəkləyir: mətn üçün TextField, parollar üçün SecureField, siyahıdan seçim üçün Picker, açmaq/bağlamaq üçün Toggle, diapazonlar üçün Slider, pilləli qiymətlər üçün Stepper və tarix üçün DatePicker. Hər element avtomatik olaraq hədəf platformada Apple-ın HIG (Human Interface Guidelines) standartına uyğun stil əldə edir.
Zahiri oxşarlığa baxmayaraq, Form və List fərqli vəzifələri həll edir. List — sürüşdürmə hərəkətləri və sətirlərin redaktəsi imkanı ilə sürüşdürülə bilən məlumat siyahılarını göstərmək üçün universal konteynerdir. Form — sistem kontrol stilləri üçün optimallaşdırılmış məlumat daxiletmə və parametrlər üçün ixtisaslaşdırılmış konteynerdir.
List dinamik məlumatları göstərmək üçün uyğundur: xəbər lentləri, çatlar, məhsul kataloqları. Form — proqnozlaşdırıla bilən sahə dəsti ilə statik ekranlar üçün: istifadəçi profili, proqram parametrləri, qeydiyyat anketi. Əsas fərq: Form elementləri interaktiv kontrollar ola bilər, List sətirləri isə çox vaxt məlumatları göstərir və toxunuşa naviqasiya və ya hərəkətlə cavab verir.
| Parametr | Form | List |
|---|---|---|
| Təyinat | Məlumat daxiletmə, parametrlər | Siyahıların göstərilməsi |
| Bölmə stili | Grouped (iOS), sistem (macOS) | Plain və ya Grouped |
| Kontrollar | Picker, Toggle, Slider, Stepper | Məhdud (düymə) |
| Dinamik məlumatlar | Məhdud (Section daxilində ForEach) | Tam dəstək |
| Sürüşdürmə hərəkətləri | Bəli, swipeActions | Bəli, swipeActions |
Apple Human Interface Guidelines (2025)-ə görə, Form bir ekranda 3-dən 20-dək idarəetmə elementi olan və bölmələrə bölünmənin qavrayışı yaxşılaşdırdığı parametrlər və daxiletmə ekranları üçün istifadə edilməlidir.
Section — məntiqi əlaqəli elementləri qruplaşdırmağa imkan verən Form-un əsas tikinti blokudur. Hər Section-ın başlığı, alt yazısı və içəridə istənilən sayda kontrolu ola bilər. Sistem bölmələr arasında boşluqları avtomatik əlavə edir və hər birini yuvarlaq künclü vizual bloka bükür.
Section-dan istifadə formanın oxunaqlılığı üçün son dərəcə vacibdir: mənaca qruplaşdırılmış elementlər istifadəçi tərəfindən daha asan qavranılır. Məsələn, profil parametrləri ekranında ayrıca "Şəxsi məlumatlar", "Bildirişlər" və "Təhlükəsizlik" bölmələrinə ayırmaq olar. Hər bölmə elementlər qrupunun altında sistemin daha kiçik şriftlə göstərdiyi izahedici mətnlə alt yazıdan ibarət ola bilər.
Form {
Section(header: Text("Profil")) {
TextField("Ad", text: $name)
TextField("Email", text: $email)
}
Section(header: Text("Bildirişlər"),
footer: Text("Görüşlər zamanı söndür")) {
Toggle("Push notifications", isOn: $pushEnabled)
Toggle("Email notifications", isOn: $emailEnabled)
}
}
Nümunədə birinci "Profile" bölməsi alt yazısız iki mətn sahəsini, ikinci "Notifications" bölməsi isə qrupun altında izahatla iki keçid elementi ehtiva edir. Alt yazı avtomatik olaraq boşluq əlavə edir və caption şrift stilindən istifadə edir. Section başlıqsız alt yazı və ya alt yazısız başlıq ehtiva edə bilər.
Form SwiftUI-nin bütün standart daxiletmə elementlərini dəstəkləyir. Picker Form daxilində avtomatik olaraq iOS-da seçim üçün ayrıca ekrana keçidli naviqasiya sətri kimi göstərilir. Toggle sağ kənara düzləşdirilmiş keçid elementi olan sətir kimi göstərilir. TextField placeholder ilə sistem daxiletmə stilini əldə edir.
Ədədi qiymətlər üçün Stepper (pilləli dəyişmə) və Slider (diapazonda hamar dəyişmə) istifadə olunur. DatePicker bir neçə rejimi dəstəkləyir: date, time, dateAndTime. Rəng seçimi üçün ColorPicker mövcuddur. Hər element əlavə kod olmadan platformaya uyğunlaşır — iOS-da kontrollar UIKit-in doğma stillərindən, macOS-da isə AppKit-dən istifadə edir.
| Element | Təyinat | Formdakı stil |
|---|---|---|
| TextField | Mətn daxiletmə | Placeholderli sətir |
| SecureField | Parol daxiletmə | Gizli simvolları olan sətir |
| Picker | Siyahıdan seçim | Seçim ekranına NavigationLink |
| Toggle | Açmaq/Bağlamaq | Keçid elementli sətir |
| Slider | Qiymət diapazonu | Üfüqi sürgü |
| DatePicker | Tarix/vaxt seçimi | Kompakt və ya çarx stili |
Form daxilində xüsusi kontrollar üçün istənilən SwiftUI View-dan istifadə etmək olar — onlar bölmənin standart davranışını miras alır. Lakin sistem elementlərinə riayət etmək tövsiyə olunur, çünki onlar HIG-ə uyğunluğu təmin edir və əlavə tənzimləmə olmadan Accessibility (VoiceOver, Dynamic Type) dəstəkləyir.
Form-dan istifadə edərək qeydiyyat ekranının yaradılmasını nəzərdən keçirək. Forma dörd bölmədən ibarətdir: şəxsi məlumatlar, rol seçimi, abunə parametrləri və göndərmə düyməsi. Qruplaşdırma üçün Section və standart SwiftUI kontrolları istifadə olunur.
struct RegistrationForm: View {
@State private var name = ""
@State private var email = ""
@State private var role = "Developer"
@State private var agreedToTerms = false
let roles = ["Developer", "Designer", "Manager"]
var body: some View {
NavigationStack {
Form {
Section(header: Text("Şəxsi məlumatlar")) {
TextField("Name", text: $name)
TextField("Email", text: $email)
.keyboardType(.emailAddress)
}
Section(header: Text("Rol")) {
Picker("Select role", selection: $role) {
ForEach(roles, id: \.self) { role in
Text(role).tag(role)
}
}
}
Section {
Toggle("Agree to terms", isOn: $agreedToTerms)
}
Section {
Button("Qeydiyyatdan keç") {
submitForm()
}
.disabled(!agreedToTerms)
}
}
.navigationTitle("Registration")
}
}
private func submitForm() { }
}
Forma dörd Section-a bölünüb: iki mətn sahəsi ilə şəxsi məlumatlar, Picker vasitəsilə rol seçimi, Toggle vasitəsilə şərtlərlə razılıq və qeydiyyat düyməsi. Düymə istifadəçi şərtlərlə razılaşana qədər söndürülüb — bu, Form daxilində validasiya nümunəsidir. NavigationStack başlıq əlavə edir və Picker-ə iOS-da ayrıca seçim ekranı açmağa imkan verir.
struct SettingsForm: View {
@State private var volume: Double = 0.5
@State private var isDarkMode = false
@State private var reminderDate = Date()
var body: some View {
NavigationStack {
Form {
Section(header: Text("Görünüş")) {
Toggle("Dark mode", isOn: $isDarkMode)
Slider(value: $volume, in: 0...1) {
Text("Səs")
}
}
Section(header: Text("Xatırlatmalar"),
footer: Text("Seçilmiş vaxtda bildiriş alacaqsınız")) {
DatePicker("Remind at",
selection: $reminderDate,
displayedComponents: .hourAndMinute)
}
Section {
NavigationLink("Advanced Settings",
destination: AdvancedSettingsView())
}
}
.navigationTitle("Settings")
}
}
}
Bu nümunə Form daxilində Slider, DatePicker və NavigationLink kombinasiyasını nümayiş etdirir. DatePicker yalnız vaxtı göstərmək üçün hourAndMinute rejimindən istifadə edir. Sonuncu bölmədəki NavigationLink genişləndirilmiş parametrlər ekranına keçid yaradır — Settings tipli interfeyslər üçün geniş yayılmış naxış. Bölmələrin başlıqları və alt yazıları formanı öz-özünü izah edən edir: istifadəçi hər idarəetmə elementinin hansı qrupa aid olduğunu dərhal başa düşür.
Tez-tez verilən suallar
Form məlumat daxiletmə və parametrlər üçün optimallaşdırılıb: idarəetmə elementləri sistem stilləri, bölmələr — yuvarlaq künclər və boşluqlar əldə edir. List — məlumatların göstərilməsi üçün universal konteynerdir. Form parametrlər ekranları üçün, List isə çatlar, lentlər, kataloqlar üçün uyğundur.
Bəli, Form daxilindəki Picker avtomatik olaraq iOS-da seçilmiş qiymətli sətir və siyahıdan seçim üçün NavigationLink kimi göstərilir. macOS-da Picker stildən asılı olaraq açılan siyahı və ya radio qrupu kimi göstərilir. Adaptasiya əlavə kod olmadan baş verir.
İstənilən SwiftUI View Form və ya Section daxilinə yerləşdirilə bilər. Xüsusi kontrollar üçün bölmənin standart boşluqlarını miras almaq və sistem şriftləri vasitəsilə Dynamic Type-ı dəstəkləmək tövsiyə olunur. Formanın bütün cihazlarda düzgün göstərilməsi üçün sabit ölçü və rənglərdən çəkinin.
Bəli, məzmun ekranın hündürlüyünü aşarsa, Form avtomatik olaraq ScrollView-a bükülür. ScrollView-i əl ilə əlavə etmək lazım deyil — sistem sürüşdürmə ehtiyacını özü müəyyən edir. Sürüşməli olmayan formalar üçün sabit hündürlüklü VStack-dan istifadə edin.
iOS-da Form .formStyle(.grouped) modifikatoru ilə iki stili dəstəkləyir — yuvarlaq bölmələri olan standart grouped görünüş. macOS üçün çoxsütunlu yerləşdirmə ilə .formStyle(.columns) mövcuddur. Stil bütün Form-a birdən tətbiq olunur və içindəki bütün elementlərin vizual təqdimatını dəyişir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun