استک های تنبل (Lazy Stacks)
در SwiftUI «استک تنبل (Lazy Stack)» یعنی رندرِ تنبل. یعنی آیتم ها وقتی دیده می شوند ساخته می شوند. بنابراین حافظه کمتر مصرف می شود و اسکرول روان تر می ماند.
LazyVStack و LazyHStack چیست؟
«VStack/HStack» یعنی چیدمان عمودی/افقی. «Lazy» یعنی ساختنِ آیتم ها فقط هنگام نیاز. این کار برای فهرست های بزرگ عالی است. مثل لیست نمرات طولانی مدرسه.
نمونه: لیست عمودی بزرگ با LazyVStack
از «ScrollView» استفاده کن تا اسکرول فعال شود. سپس «LazyVStack» بگذار تا رندر تنبل انجام شود.
import SwiftUI
struct LazyStacksDemo: View {
var body: some View {
ScrollView {
LazyVStack(
spacing: 8
) {
ForEach(1...100, id: \.self) { i in
Text("Row \\(i)")
.frame(
maxWidth: .infinity,
alignment: .leading
)
.padding(8)
.background(
.gray.opacity(0.1)
)
.cornerRadius(6)
}
}
.padding()
}
}
}
نکته: فاصله مناسب بگذار تا آیتم ها خواناتر شوند.
نمونه: کاروسل افقی با LazyHStack
برای کارت های横 اسکرولی، «ScrollView(.horizontal)» بگذار. سپس «LazyHStack» استفاده کن تا فقط کارت های روی صفحه ساخته شوند.
import SwiftUI
struct LazyHStackDemo: View {
var body: some View {
ScrollView(.horizontal) {
LazyHStack(
spacing: 12
) {
ForEach(1...50, id: \.self) { i in
Text("Card \\(i)")
.padding(16)
.background(
.blue.opacity(0.1)
)
.cornerRadius(8)
}
}
.padding()
}
}
}
گام های عملی
- یک ScrollView بساز و جهت را تعیین کن.
- LazyVStack یا LazyHStack را داخلش بگذار.
- با ForEach آیتم ها را تولید کن.
هشدار: ویوهای سنگین داخل هر آیتم نگذار. سرعت کم می شود.
پیمایش مرتبط
مرور صفحه ناحیه امن برای لبه ها مفید است. همچنین این صفحه را با عنوان استک های تنبل نشانه گذاری کن.
جمع بندی سریع
- Lazy یعنی ساختن فقط هنگام نیاز.
- LazyVStack برای لیست های عمودی است.
- LazyHStack برای کاروسل های افقی است.
- ScrollView را فراموش نکن.