برنامه نویسی

آموزش 13: اشیاء قابل مشاهده و اشیاء محیط زیست در Swiftui

مقدمه

در این آموزش ، ما کاوش خواهیم کرد قابل مشاهده وت محیط در Swiftui ، که برای مدیریت وضعیت در برنامه شما ضروری است. ما از این مفاهیم برای ساختن یک بازی ساده آیفون استفاده خواهیم کرد. با پایان این آموزش ، خواهید فهمید:

  • تفاوت بین @Stateبا @ObservedObjectوت @EnvironmentObject
  • نحوه استفاده ObservableObject برای مدیریت داده ها
  • نحوه به اشتراک گذاری داده ها در نمای با EnvironmentObject
  • نحوه استفاده از این دانش برای ساختن یک بازی ساده در Swiftui
  • نحوه اعمال swiftui در در مقابل کد

پیش نیازهای

قبل از شروع ، اطمینان حاصل کنید که:

  • Xcode نصب شده (آخرین نسخه توصیه شده)
  • دانش سریع (سطح اساسی تا متوسط)
  • در مقابل کد با پسوند Swift نصب شده (برای توسعه جایگزین)

درک مدیریت دولت Swiftui

@State

  • مورد استفاده برای مدیریت ساده دولت در یک نمای واحد.
  • هنگامی که حالت تغییر می کند ، به طور خودکار نمای را تازه می کند.

مثال:

struct CounterView: View {
    @State private var count = 0

    var body: some View {
        VStack {
            Text("Count: \(count)")
            Button("Increment") {
                count += 1
            }
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

@ObservedObject

  • هنگامی که چندین نمایش نیاز به به اشتراک گذاری حالت دارد استفاده می شود.
  • نیاز به یک کلاس مطابق با ObservableObjectبشر

مثال:

class CounterModel: ObservableObject {
    @Published var count = 0
}

struct CounterView: View {
    @ObservedObject var model = CounterModel()

    var body: some View {
        VStack {
            Text("Count: \(model.count)")
            Button("Increment") {
                model.count += 1
            }
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

@EnvironmentObject

  • برای تزریق داده های مشترک به چندین نمایش بدون صریح عبور از آن استفاده می شود.
  • نیاز دارد .environmentObject() اصلاح کننده در نمای والدین.

مثال:

class GameSettings: ObservableObject {
    @Published var score = 0
}

struct ScoreView: View {
    @EnvironmentObject var settings: GameSettings

    var body: some View {
        Text("Score: \(settings.score)")
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


ساختن یک بازی ساده: روی دایره ضربه بزنید

مرحله 1: یک مدل بازی ایجاد کنید

class GameModel: ObservableObject {
    @Published var score = 0
    @Published var position = CGPoint(x: 100, y: 100)
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 2: نمای بازی را بسازید

struct GameView: View {
    @EnvironmentObject var game: GameModel

    var body: some View {
        ZStack {
            Color.blue.edgesIgnoringSafeArea(.all)
            Circle()
                .fill(Color.red)
                .frame(width: 50, height: 50)
                .position(game.position)
                .onTapGesture {
                    game.score += 1
                    game.position = CGPoint(x: CGFloat.random(in: 50...350), y: CGFloat.random(in: 50...700))
                }

            VStack {
                Text("Score: \(game.score)")
                    .font(.largeTitle)
                    .padding()
                Spacer()
            }
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 3: نمای ریشه را تنظیم کنید

@main
struct MyApp: App {
    @StateObject private var game = GameModel()

    var body: some Scene {
        WindowGroup {
            GameView()
                .environmentObject(game)
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


پایان

در این آموزش ، شما یاد گرفتید که چگونه استفاده کنید @Stateبا @ObservedObjectوت @EnvironmentObject در Swiftui شما همچنین یک بازی ساده ساخته اید که UI را به صورت پویا با استفاده از این مفاهیم به روز می کند. سرانجام ، شما نحوه کار با Swiftui را در VS Code بررسی کردید.

با این دانش ، اکنون می توانید برنامه های Swiftui پیچیده تر و تعاملی تر بسازید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا