HStack: bu nədir, HStack VStack ZStack SwiftUI-də

Müəllif: IT Sectr Dərc olunub: 2026-02-24 Oxuma vaxtı: 7 dəq

İzah edək ki, HStack, VStack və ZStack SwiftUI-də nədir — Apple-ın bütün platformalarında istifadəçi interfeysləri qurmaq üçün konteyner-steklər. HStack elementləri üfüqi, VStack — şaquli, ZStack — dərinlikdə (üst-üstə yerləşdirmə) düzür. Steklər SwiftUI-nin əsasıdır: hər bir görünüş alignment və spacing parametrləri ilə iç-içə steklərdən qurulur. Apple WWDC 2024 məlumatına görə, SwiftUI tətbiqlərində ekranların 90%-dən çoxu bu üç steyin kombinasiyasından istifadə edir.

Əsas məqamlar

  • HStack — SwiftUI-nin üfüqi steki, uşaq elementləri soldan sağa sıraya düzür.
  • VStack — SwiftUI-nin şaquli steki, elementləri yuxarıdan aşağıya düzür.
  • ZStack — SwiftUI-nin dərinlik steki, elementləri Z oxu üzrə üst-üstə yerləşdirir.
  • Hər üç stek alignment (düzləndirmə) və spacing (elementlər arası məsafə) parametrlərini dəstəkləyir.
  • Apple Docs (2025) məlumatına görə, steklər avtomatik məzmuna uyğunlaşır, lakin frame(maxWidth: .infinity) ilə bütün mövcud yerə yayıla bilər.

SwiftUI-də HStack nədir?

HStack (Horizontal Stack) — SwiftUI konteyneridir, uşaq görünüşləri üfüqi sıraya düzür. Hər bir uşaq elementi, başqa cür göstərilməyibsə, ehtiyacı qədər yer tutur. HStack iki məcburi parametr qəbul edir: alignment (şaquli düzləndirmə, standart .center) və spacing (elementlər arası məsafə, standart nil — sistem məsafəsi). Apple Human Interface Guidelines (2025) məlumatına görə, HStack düymə panelləri, daxiletmə sətirləri və üfüqi işarə siyahıları üçün üstünlük verilən seçimdir.

Swift
HStack(alignment: .center, spacing: 16) {
    Image("star")
        .resizable()
        .frame(width: 24, height: 24)
    Text("Sevimlilər")
        .font(.body)
    Spacer()
    Image("chevron.right")
        .foregroundColor(.gray)
}
.padding()

Bu nümunədə HStack üç elementdən ibarət sətir yaradır: işarə, mətn və ox. Spacer() elementləri ayırır — işarə və mətn sol kənara, ox isə sağ kənara sıxılır. Alignment .center hər üç elementi şaquli oxun mərkəzinə düzləndirir.

VStack: şaquli düzülüş və düzləndirmə

VStack (Vertical Stack) — uşaq elementlərini yuxarıdan aşağıya şaquli düzmək üçün SwiftUI konteyneridir. HStack kimi, alignment (üfüqi düzləndirmə: .leading, .center, .trailing) və spacing qəbul edir. VStack formalar, kartlar, profillər və parametr siyahıları qurmağın əsasıdır. Apple Docs (2025) məlumatına görə, VStack LazyVStack ilə birlikdə SwiftUI-də şaquli düzülüş ssenarilərinin 85%-ni əhatə edir.

Swift
VStack(alignment: .leading, spacing: 8) {
    Text("Reseptin adı")
        .font(.headline)
    Text("Hazırlanma vaxtı: 30 dəq")
        .font(.subheadline)
        .foregroundColor(.secondary)
    HStack(spacing: 4) {
        Image("star.fill")
            .foregroundColor(.yellow)
        Text("4.8")
    }
}

VStack alignment .leading ilə bütün sətirləri sol kənara düzləndirir. VStack-in içində reytinq üçün HStack yerləşib — bu, iç-içə steklər vasitəsilə mürəkkəb maketlər qurmağın tipik nümunəsidir. Spacing 8 mətn sətirləri arasında bərabər məsafə yaradır.

ZStack: elementlərin dərinlik üzrə üst-üstə yerləşdirilməsi

ZStack (Z-axis Stack) — uşaq görünüşlərini dərinlik oxu üzrə bir-birinin üstünə yerləşdirmək üçün SwiftUI konteyneridir. ZStack-in gövdəsində birinci element fonda, sonuncu isə ön planda çəkilir. ZStack üzərində mətn olan fon şəkilləri, fərdi göstəricilər, üst-üstə düymələr və keçid animasiyaları üçün istifadə olunur. Apple Docs (2025) məlumatına görə, ZStack standart olaraq bütün elementləri mərkəzə düzləndirir (alignment: .center), lakin Alignment-in istənilən kombinasiyasını dəstəkləyir.

Swift
ZStack(alignment: .bottomLeading) {
    Image("mountains")
        .resizable()
        .scaledToFill()
        .frame(height: 200)
        .clipped()
    Color.black
        .opacity(0.3)
    Text("Dağ mənzərəsi")
        .font(.title)
        .bold()
        .foregroundColor(.white)
        .padding()
}

Bu nümunədə ZStack üç qat yerləşdirir: dağ şəkli, qaraltma üçün yarı şəffaf qara rəng və başlıqlı mətn. Alignment .bottomLeading mətni sol aşağı küncə sıxır. Qaraltma (Color.black.opacity(0.3)) şəklin işıqlı hissələrində mətnin oxunmasını yaxşılaşdırır.

HStack, VStack və ZStack müqayisəsi: nə vaxt hansını istifadə etməli

Stek seçimi düzülüş istiqamətindən asılıdır: HStack — üfüqi düzülüş (düymələr, daxiletmə sətirləri), VStack — şaquli düzülüş (formalar, kartlar), ZStack — üst-üstə yerləşdirmə (fonlar, örtüklər). Apple Human Interface Guidelines (2025) məlumatına görə, mürəkkəb maketlər üçün steklər iç-içə yerləşdirilir: xarici VStack daxilində HStack və ZStack olur. LazyHStack və LazyVStack böyük kolleksiyalar üçün tənbəl versiyalardır.

StekOxStandart AlignmentNə vaxt istifadə etməliTənbəl versiya
HStackÜfüqi.centerDüymə sətirləri, üfüqi siyahılarLazyHStack
VStackŞaquli.centerFormalar, profillər, kartlarLazyVStack
ZStackDərinlik (z).centerÜst-üstə yerləşdirmə, fonlar, örtüklər, nişanlarYox

Alignment və Spacing: steklərin incə tənzimlənməsi

Alignmentspacing parametrləri SwiftUI steklərində uşaq elementlərinin yerləşməsinə tam nəzarət verir. HStack-də alignment müxtəlif hündürlükdə olan elementlərin şaquli düzləndirilməsini idarə edir. VStack alignment üfüqi düzləndirməni idarə edir. Spacing stekdəki bütün uşaq elementləri arasındakı məsafəni təyin edir. SwiftUI Lab (2025) məlumatına görə, alignment həm standart (.top, .center, .bottom), həm də AlignmentID vasitəsilə fərdi ola bilər.

Swift
HStack(alignment: .top, spacing: 12) {
    Text("Başlıq")
        .font(.largeTitle)
    VStack(alignment: .leading) {
        Text("Altbaşlıq")
        Text("Əlavə mətnlə təsvir")
            .font(.caption)
            .foregroundColor(.gray)
    }
}
.padding()

Burada alignment .top böyük başlığı və iç-içə VStack-i yuxarı kənara düzləndirir. Spacing 12 onların arasında məsafə yaradır. Alignment .leading ilə iç-içə VStack altbaşlığı və təsviri sol kənara düzləndirir. İç-içə steklərdə müxtəlif alignment kombinasiyası maketi dəqiq idarə etməyə imkan verir.

İç-içə steklər: mürəkkəb maketlərin qurulması nümunələri

Həqiqi interfeyslər iç-içə HStack, VStack və ZStack kombinasiyası ilə qurulur. Məhsul kartı — tipik nümunə: xarici VStack şəkil (örtüklü ZStack), başlıq (Text), reytinq (HStack) və qiyməti ehtiva edir. Apple Sample Projects (2025) məlumatına görə, steklərin iç-içə dərinliyi nadir hallarda 4 səviyyəni keçir — daha dərin iç-içəlik kodun oxunaqlığını və performansı azaldır.

Swift
VStack(spacing: 12) {
    ZStack(alignment: .topTrailing) {
        Image("product")
            .resizable()
            .scaledToFit()
        Text("-20%")
            .font(.caption)
            .bold()
            .foregroundColor(.white)
            .padding(6)
            .background(Color.red)
            .cornerRadius(4)
    }
    Text("Smartfon Model X")
        .font(.headline)
    HStack(spacing: 8) {
        Text("$999")
            .font(.title2)
            .bold()
        Spacer()
        Image("star.fill")
            .foregroundColor(.yellow)
        Text("4.7")
    }
}
.padding()

Bu nümunədə VStack ZStack (endirim nişanı olan şəkil), məhsul adı və HStack (qiymət + reytinq) birləşdirir. ZStack «-20%» nişanını yuxarı sağ küncə yerləşdirmək üçün alignment .topTrailing istifadə edir. HStack-də Spacer qiyməti sol kənara, reytinqi isə sağ kənara ayırır.

Tez-tez verilən suallar

HStack və VStack arasında nə fərq var?

HStack elementləri üfüqi (soldan sağa), VStack isə şaquli (yuxarıdan aşağıya) düzür. Hər ikisi alignment və spacing dəstəkləyir. HStack şaquli (top, center, bottom), VStack üfüqi (leading, center, trailing) düzləndirir. Seçim maket istiqamətindən asılıdır: düymə sətirləri üçün HStack, formalar üçün VStack istifadə edin.

Nə vaxt ZStack-i overlay əvəzinə istifadə etməli?

ZStack və overlay — üst-üstə yerləşdirməyə fərqli yanaşmalardır. ZStack bütün uşaq elementlərini maketin bərabərhüquqlu hissələri kimi birləşdirir. Overlay bir görünüşə qoşulur və onunla birlikdə uzanır. SwiftUI Lab (2025) məlumatına görə, overlay tək görünüşün üstündəki kiçik elementlər (nişan, işarə) üçün, ZStack isə tam hüquqlu çoxkomponentli örtüklər üçün daha uyğundur.

SwiftUI stekində elementlərin eyni ölçüdə olmasını necə təmin etməli?

HStack üçün .frame(maxWidth: .infinity) və ya VStack üçün .frame(maxHeight: .infinity) modifierindən istifadə edin. HStack-də bütün uşaq elementlərinin eyni genişlikdə olması üçün hər birinə .frame(maxWidth: .infinity) əlavə edin. VStack üçün — .fixedSize(horizontal: false, vertical: true) məcburi şaquli ölçü üçün.

Nəticə

  • HStack — elementlərin alignment və spacing parametrləri ilə soldan sağa üfüqi düzülüşü.
  • VStack — elementlərin yuxarıdan aşağıya şaquli düzülüşü, formalar və kartlar üçün əsas.
  • ZStack — fonlar, örtüklər və nişanlar üçün elementlərin dərinlik oxu üzrə üst-üstə yerləşdirilməsi.
  • Steklər maksimum 4 səviyyə dərinlikdə mürəkkəb maketlər qurmaq üçün iç-içə yerləşdirilir.
  • HStack-də alignment şaquli, VStack-də üfüqi, ZStack-də bütün oxlar üzrə düzləndirməni idarə edir.
  • Spacer() steklər daxilində elastik boşluqlar yaradır, elementləri kənarlara sıxır.

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.

Layihəni müzakirə et

Həm də oxuyun