- Published on
SwiftUI da Backgrounds va Overlays
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Yana xush kelibsiz!
Hammaga yana xush kelibsiz! Men Nikman. Bu videoda fonlar (backgrounds) va qatlamlar (overlays) haqida gaplashamiz. Ularning nomi o‘z-o‘zidan tushunarli – fon ob’ekt orqasiga, qatlam esa oldiga joylashadi. SwiftUI’da bu ikkisi juda kuchli vositalar, lekin ko‘pincha, ayniqsa yangi boshlovchilar tomonidan e’tibordan chetda qoladi.
Biz fonlarni fonlar ustiga, qatlamlarni qatlamlar ustiga qo‘sha olamiz va ularni aralashtirib, ajoyib effektlar yaratish mumkin. Men sizlarga:
- Ularning qanday qo‘llanilishini,
- O‘lcham va tekislash bilan qanday moslashtirilishini ko‘rsataman,
- Umuman, fonlar va qatlamlardan qulay foydalanishni o‘rgataman.
Eslatma: Ular ko‘pincha e’tibordan chetda qolsa-da, juda muhim – agar qatlamlashni yaxshi tushunsangiz, SwiftUI’da tezda mutaxassis bo‘lib ketasiz.
Yangi fayl yaratish
Xcode loyihamizga qaytdim. Bu videodagi kod uchun yangi fayl yaratyapman:
- Project Navigator’da (chapda) o‘ng tugmani bosing.
- “New File” > “SwiftUI View”ni tanlang.
- Fayl nomini “BackgroundAndOverlayBootcamp” deb qo‘ying.
Fayl ochilgach, o‘ngdagi preview’da “Resume” tugmasini bosing – preview ulanadi.
Fonlar (Backgrounds)
Fonlar bilan boshlaymiz:
Text("Hello World")
.background(Color.red)
.background()– ob’ekt orqasiga fon qo‘shadi.- Hozirgacha biz rang (masalan,
Color.red) ishlatdik, ammo esda tuting:.background(View)– istalgan ko‘rinish (view) bo‘lishi mumkin (matn, shakl, gradient).
Gradient fon
Text("Hello World")
.background(
LinearGradient(
gradient: Gradient(colors: [Color.red, Color.blue]),
startPoint: .leading,
endPoint: .trailing
)
)
- LinearGradient – fon sifatida gradient qo‘shildi.
Shakl fon
Text("Hello World")
.frame(width: 100, height: 100, alignment: .center)
.background(
Circle()
.fill(Color.blue)
)
- Circle() – fon sifatida ko‘k doira.
- Matn freymi (100x100) qo‘shildi – fon matnga moslashadi.
Fonlarni qatlamlash
Text("Hello World")
.frame(width: 100, height: 100, alignment: .center)
.background(
Circle()
.fill(Color.blue)
.frame(width: 120, height: 120)
)
.background(
Circle()
.fill(Color.red)
)
- Birinchi fon – ko‘k doira (120x120).
- Ikkinchi fon – qizil doira (standart o‘lchamda matnga mos).
- Freymlar fonlar ichida yoki matn uchun ishlatilishi mumkin.
Qatlamlar (Overlays)
Overlays fonlar kabi ishlaydi, lekin ob’ekt oldiga qo‘yiladi:
Circle()
.fill(Color.pink)
.frame(width: 100, height: 100)
.overlay(
Text("1")
.font(.largeTitle)
.foregroundColor(.white)
)
.overlay()– pushti doira ustiga “1” matni qo‘shildi.
Fon va qatlam birgalikda
Circle()
.fill(Color.pink)
.frame(width: 100, height: 100)
.overlay(
Text("1")
.font(.largeTitle)
.foregroundColor(.white)
)
.background(
Circle()
.fill(Color.purple)
.frame(width: 110, height: 110)
)
- Fon – binafsha doira (110x110).
- Qatlam – matn (oldingi qatlam).
Tekislash bilan ishlash
Fonlar va qatlamlarda tekislash muhim va ko‘pincha e’tibordan chetda qoladi:
Rectangle()
.frame(width: 100, height: 100)
.overlay(
Rectangle()
.fill(Color.blue)
.frame(width: 50, height: 50),
alignment: .topLeading
)
.background(
Rectangle()
.fill(Color.red)
.frame(width: 150, height: 150),
alignment: .bottomTrailing
)
- Overlay – ko‘k kichik to‘rtburchak, yuqori chapga (
topLeading) tekislangan. - Background – qizil katta to‘rtburchak, pastki o‘ngga (
bottomTrailing) tekislangan. .overlay(View, alignment:)va.background(View, alignment:)– tekislashni aniq sozlash imkonini beradi.
Real dunyo misoli
Bu bilimlarni birlashtirib, tugma yasaymiz:
Image(systemName: "heart.fill")
.font(.system(size: 40))
.foregroundColor(.white)
.background(
Circle()
.fill(
LinearGradient(
gradient: Gradient(colors: [
Color(red: 0.6, green: 0.2, blue: 0.8),
Color(red: 0.4, green: 0.0, blue: 0.6)
]),
startPoint: .topLeading,
endPoint: .bottomTrailing
)
)
.frame(width: 100, height: 100)
.shadow(color: Color(red: 0.6, green: 0.2, blue: 0.8).opacity(0.5), radius: 10, x: 0, y: 10)
.overlay(
Circle()
.fill(Color.blue)
.frame(width: 35, height: 35)
.overlay(
Text("5")
.font(.headline)
.foregroundColor(.white)
)
.shadow(color: Color(red: 0.6, green: 0.2, blue: 0.8).opacity(0.5), radius: 10, x: 5, y: 5),
alignment: .bottomTrailing
)
)
- Image – oq yurak ikonkasi (40 o‘lcham).
- Background:
- Gradientli binafsha doira (100x100).
.shadow()– gradient rangidan 50% shaffof soya.
- Overlay:
- Ko‘k kichik doira (35x35), pastki o‘ngga (
bottomTrailing) tekislangan. - Ichida “5” matni – bildirishnoma sifatida.
- Kichik doiraga ham moslashtirilgan soya.
- Ko‘k kichik doira (35x35), pastki o‘ngga (
Xulosa
Bu videoda fonlar va qatlamlarni:
- Qo‘shish va qatlamlashni,
- O‘lcham va tekislash bilan moslashtirishni,
- Real misolda birlashtirishni o‘rgandik.
SwiftUI’da qatlamlash imkoniyatlari cheksiz – fonlar va qatlamlarni har xil usulda birlashtirib, ijodiy ko‘rinishlar yaratish mumkin. Bu video biroz uzunroq bo‘ldi, lekin tekislash va asoslarni tushunsangiz, ajoyib natijalarga erishasiz. Men Nikman, bu “Swiftful Thinking”, keyingi videoda ko‘rishguncha!