دسترس پذیری در SwiftUI (SwiftUI Accessibility)
«دسترس پذیری (Accessibility)» یعنی همه بتوانند از اپ استفاده کنند. «VoiceOver» یک خواننده صفحه است. «Dynamic Type» یعنی اندازه متن کاربر تغییر کند. با برچسب، مقدار و نکته ها، کنترل ها روشن و قابل فهم می شوند.
برچسب ها و مقدارها در دسترس پذیری
«Label» توضیح کوتاه کنترل است. «Value» مقدار فعلی را می گوید. «Hint» راهنمای کار بعدی است. سپس VoiceOver این اطلاعات را درست می خواند. بنابراین کاربر سریع تر می فهمد چه خبر است.
import SwiftUI
struct A11yDemo: View {
@State private var count = 0
var body: some View {
VStack(spacing: 12) {
Text("Count: \(count)")
.accessibilityLabel("Current count")
.accessibilityValue("\(count)")
Button("Increment") {
count += 1
}
.accessibilityHint("Increases the count by one")
}
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
A11yDemo()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
نکته: متن پویا را با Dynamic Type تست کن. سپس خوانایی همه جا خوب می ماند.
گروه بندی عناصر برای VoiceOver
گاهی چند View یک واحد معنایی هستند. با «accessibilityElement(children: .combine)» آن ها را یکی کن. سپس VoiceOver همه را یکجا می خواند. این کار از پرگویی ناخواسته جلوگیری می کند.
import SwiftUI
struct Badge: View {
var body: some View {
VStack {
Image(systemName: "star.fill")
Text("Premium plan")
}
.accessibilityElement(children: .combine)
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
Badge()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
گام های عملی سریع
- برای هر کنترل، Label و Value تعیین کن.
- برای عملیات، Hint کوتاه بنویس.
- نمایش با Dynamic Type را بررسی کن.
- ویوهای مرتبط را ترکیب کن.
- با VoiceOver نتیجه را تست کن.
هشدار: از متن های طولانی در Label پرهیز کن. بنابراین خواندن سریع می ماند.
لینک های مفید داخلی
برای بررسی کنتراست، به حالت روشن/تیره برو. همچنین ادامه مبحث را در برچسب ها و اکشن ها دنبال کن.
جمع بندی سریع
- Label، Value، Hint را کامل کن.
- Dynamic Type را حتماً تست کن.
- عناصر مرتبط را ترکیب کن.
- با VoiceOver همه چیز را گوش بده.
- کنتراست را همیشه بسنج.