ناحیه امن (Safe Area)
در SwiftUI «ناحیه امن (Safe Area)» محدوده امن نمایش است. یعنی جاهایی که زیر نوار وضعیت یا هوم بار نمی رود. با دو ابزار کار می کنیم: .ignoresSafeArea() و .safeAreaInset().
پُر کردن تمام صفحه با ignoresSafeArea()
«ignoresSafeArea()» یعنی نمای تو از مرزهای امن عبور کند. پس پس زمینه می تواند زیر نوارها برود، اما متن وسط بماند.
import SwiftUI
struct SafeAreaDemo: View {
var body: some View {
ZStack {
LinearGradient(
colors: [.blue, .purple],
startPoint: .top,
endPoint: .bottom
)
.ignoresSafeArea()
Text("Hello safe area")
.padding()
.background(.ultraThinMaterial)
.cornerRadius(8)
}
}
}
نکته: پس زمینه را گسترده کن، اما محتوای خواندنی را داخل ناحیه امن نگه دار.
افزودن نوار لبه با safeAreaInset()
«safeAreaInset()» یعنی یک نوار یا ابزارک کنار لبه ها بگذاری. مثل نوار پایین برای دکمه خانه و تنظیمات.
import SwiftUI
struct SafeAreaInsetDemo: View {
var body: some View {
ZStack {
LinearGradient(
colors: [.purple, .pink],
startPoint: .top,
endPoint: .bottom
)
.ignoresSafeArea()
Text("Content")
.padding()
.background(.ultraThinMaterial, in: Capsule())
}
.safeAreaInset(edge: .bottom) {
HStack {
Image(systemName: "house.fill")
Spacer()
Image(systemName: "gear")
}
.padding()
.background(.regularMaterial)
}
}
}
گام های عملی
- یک پس زمینه بساز و ignoresSafeArea را فعال کن.
- متن را با padding خوانا نگه دار.
- یک نوار پایین با safeAreaInset اضافه کن.
هشدار: محتواهای تعاملی را زیر نوارها قرار نده. دسترسی سخت می شود.
پیمایش مرتبط
برای اندازه های پویا، صفحه GeometryReader را ببین. همچنین راهنمای فریم و پدینگ و گریدها مفید است. مروری کلی در چیدمان SwiftUI هم هست. برای آشنایی بیشتر با ناحیه امن از همین بخش استفاده کن.
جمع بندی سریع
- ناحیه امن زیر نوارها را محافظت می کند.
- ignoresSafeArea پس زمینه را تمام صفحه می کند.
- safeAreaInset نوارهای لبه را اضافه می کند.
- محتوای مهم داخل ناحیه امن بماند.