- Published on
SwiftUI Map App β Loyiha sozlash va Location modeli
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Loyiha sozlash va Location modeli
Bu videoda Xcode loyihasi yaratiladi, tayyor assets import qilinadi va ilovaning asosiy ma'lumot modeli β Location struct-i quriladi.
Yangi Xcode loyihasi yaratish
Xcode β Create a new Xcode project β App β iOS
Muhim sozlamalar:
- Product Name:
SwiftUIMapApp(yoki xohlagan nom) - Interface: SwiftUI
- Language: Swift
- Core Data: o'chirilgan
- Tests: o'chirilgan
MVVM papka tuzilmasi
Navigator-da to'rtta yangi guruh yaratiladi:
Models/
Views/
ViewModels/
DataServices/
Assets import qilish
Dars resurslari zip fayli ikkita narsani o'z ichiga oladi:
- Assets.xcassets papkasi β accent rang, app icon, joy rasmlari, logotip
- LocationsDataService.swift fayli β tayyor ma'lumotlar massivi
Assets-ni almashtirish
- Navigator-da mavjud
Assets.xcassets-ni o'ng tugma β Delete β Move to Trash - Yuklab olingan
Assets.xcassetspapkasini loyihaga sudrab tashlang - Dialog oynasida:
- β Copy items if needed
- β Add to targets β belgilanishi shart, aks holda rasm ilovaga qo'shilmaydi
Assets tarkibi
- AccentColor β ilova bo'yicha asosiy rang (qizil β Maraschino)
- AppIcon β asosiy ilova ikonkasi
- Locations/ β joy rasmlari, papkalar bo'yicha guruhlangan:
paris/βparis_eiffel_tower_1,paris_eiffel_tower_2,paris_eiffel_tower_3rome/βrome_coliseum_1,rome_coliseum_2,rome_coliseum_3
- Logos/ β ilova logotipi va launch screen rasmi
Rasm nomlari aniq muhim β kod ichida shu nomlar bilan murojaat qilinadi.
Accent rangni sozlash
Light va Dark mode uchun bir xil rang bo'lsa:
- Appearances: None β bitta rang barcha rejimlarda ishlatiladi
Har ikki rejim uchun alohida rang kerak bo'lsa:
- Appearances: Any, Dark β ikkita rang alohida belgilanadi
Location modeli
Models/ papkasida yangi Swift File yaratiladi (SwiftUI View emas) β Location.swift.
import Foundation
import MapKit
struct Location {
let name: String
let cityName: String
let coordinates: CLLocationCoordinate2D
let description: String
let imageNames: [String]
let link: String
}
Muhim tafsilotlar
import MapKit β CLLocationCoordinate2D turi MapKit ichida joylashgan, shuning uchun qo'shimcha import zarur.
imageNames: [String] β bu [UIImage] emas, balki rasm nomlarining massivi. Shu yo'l bilan rasm faqat ekranda ko'rsatilishi kerak bo'lganda yuklanadi, dastlabki yuklashda barcha rasmlar xotiraga o'tirtirilmaydi.
LocationsDataService β tayyor ma'lumotlar
DataServices/ papkasiga yuklab olingan LocationsDataService.swift fayli sudrab tashlanadi (xuddi assets kabi sozlamalar bilan).
import Foundation
import MapKit
class LocationsDataService {
static let locations: [Location] = [
Location(
name: "Colosseum",
cityName: "Rome",
coordinates: CLLocationCoordinate2D(latitude: 41.8902, longitude: 12.4922),
description: "The Colosseum is an oval amphitheatre...",
imageNames: ["rome_coliseum_1", "rome_coliseum_2", "rome_coliseum_3"],
link: "https://en.wikipedia.org/wiki/Colosseum"
),
Location(
name: "Eiffel Tower",
cityName: "Paris",
coordinates: CLLocationCoordinate2D(latitude: 48.8584, longitude: 2.2945),
description: "The Eiffel Tower is a wrought-iron lattice tower...",
imageNames: ["paris_eiffel_tower_1", "paris_eiffel_tower_2", "paris_eiffel_tower_3"],
link: "https://en.wikipedia.org/wiki/Eiffel_Tower"
)
// ... qolgan joylar
]
}
Fayl import qilinganida Location so'zi yashil rangga bo'yaladi β bu Location modeli to'g'ri tanilayotganligining belgisi. Agar xato ko'rsatsa, Location struct-ining maydonlari DataService-dagi qiymatlar bilan mos kelmasligi mumkin.
Yangi joy qo'shish
Keyinchalik ilovaga yangi joy qo'shish uchun:
Assets.xcassetsichiga yangi papka yarating (masalan,london/)- Rasmlarni joylashtiring va nomlang:
london_big_ben_1,london_big_ben_2... LocationsDataService.swift-dagilocationsmassiviga yangiLocationob'ekti qo'shingimageNames-dagi nomlar asset nomlariga to'liq mos kelishini tekshiring
Loyiha holati
Bu video oxirida loyiha tuzilmasi:
SwiftUIMapApp/
βββ Models/
β βββ Location.swift
βββ Views/
βββ ViewModels/
βββ DataServices/
β βββ LocationsDataService.swift
βββ Assets.xcassets/
β βββ AccentColor
β βββ AppIcon
β βββ Locations/
β βββ Logos/
βββ ContentView.swift
Xcode-da Build (βB) bajarish muvaffaqiyatli bo'lishi kerak β hozircha hech qanday UI qurilmagan, lekin ma'lumot qatlami tayyor.
Keyingi videoda LocationsViewModel qurilib, xarita va navigatsiya uchun zarur holat boshqaruvi tashkil etiladi.