SwiftUI maket (layout)


ULASHISH

SwiftUI maket (layout)

SwiftUI’ning maket tizimi yordamida stack’lar, frame’lar, tekislash va oraliqlar bilan moslashuvchan interfeyslar yarating.


Stack’lar va oraliqlar

View’larni vertikal, gorizontal yoki qatlamlar bo‘yicha joylashtirish uchun VStack, HStack va ZStack dan foydalaning.

Oraliq va tekislashni sozlash mumkin.

Sintaksis:

  • VStack(alignment: .leading, spacing: 8) { ... }
  • HStack { Text("A"); Spacer(); Text("B") }
  • ZStack { Color.blue; Text("Overlay") }

Misol

import SwiftUI

struct StacksDemo: View {
  var body: some View {
    VStack(alignment: .leading, spacing: 12) {
      Text("Title").font(.title)
      HStack {
        Text("Left")
        Spacer()
        Text("Right")
      }
      ZStack {
        Color.blue.opacity(0.1)
        Text("Overlay")
      }
    }
    .padding()
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { StacksDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Ushbu misol kontentni sarlavhalar, spacer’lar va padding bilan vertikal, gorizontal va qatlamli stack’lar yordamida joylashtiradi.



Frame’lar va tekislash

O‘lcham va joylashuvni .frame(), .padding() va .alignmentGuide yordamida sozlang.

Sintaksis:

  • .frame(width: 200, height: 100)
  • .frame(maxWidth: .infinity, alignment: .leading)
  • .alignmentGuide(.firstTextBaseline) { d in d[.bottom] }

Misol

import SwiftUI

struct FrameDemo: View {
  var body: some View {
    VStack(spacing: 16) {
      ZStack(alignment: .topLeading) {
        Color.yellow.opacity(0.2)
        Text("Top Left").padding(6)
      }
      .frame(width: 200, height: 100) // fixed size

      HStack {
        Text("Left")
        Spacer()
        Text("Right")
      }
      .frame(maxWidth: .infinity, alignment: .leading) // expand horizontally

      HStack(alignment: .firstTextBaseline, spacing: 8) {
        Text("Title").font(.title)
        Text("Aligned baseline")
          .alignmentGuide(.firstTextBaseline) { d in d[.bottom] }
      }
    }
    .padding()
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { FrameDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Ushbu misolda qat’iy va moslashuvchan frame’lar, taqsimlash uchun spacer’lar va matn uchun tayanch chiziq (baseline) bo‘yicha tekislash ko‘rsatilgan.

Maslahat: Kontentni bir-biridan uzoqlashtirish uchun Spacer() dan foydalaning.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!