精选文章

03. SwiftUI 入门

2021-03-02 · SwiftUI

03. SwiftUI 入门

SwiftUI 的关键点是:状态驱动 UI、数据单向流动、声明式结构清晰。

一、最小页面

import SwiftUI

struct HomeView: View {
    var body: some View {
        VStack(spacing: 12) {
            Text("Hello SwiftUI")
                .font(.title)
            Button("Tap") {
                print("tap")
            }
        }
        .padding()
    }
}

二、状态管理

1. @State

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

    var body: some View {
        VStack {
            Text("Count: \(count)")
            Button("+1") { count += 1 }
        }
    }
}

2. @StateObject / @ObservedObject

final class UserVM: ObservableObject {
    @Published var name: String = "JJ"
}

struct ProfileView: View {
    @StateObject private var vm = UserVM()

    var body: some View {
        Text(vm.name)
    }
}

三、列表与导航

struct Post: Identifiable {
    let id: Int
    let title: String
}

struct ListView: View {
    let items = [Post(id: 1, title: "A"), Post(id: 2, title: "B")]

    var body: some View {
        NavigationView {
            List(items) { item in
                NavigationLink(item.title) {
                    Text("Detail \(item.id)")
                }
            }
            .navigationTitle("Posts")
        }
    }
}

四、UIKit 混用

1. SwiftUI 嵌入 UIKit

let vc = UIHostingController(rootView: HomeView())

2. UIKit 组件包一层

struct ActivityView: UIViewRepresentable {
    func makeUIView(context: Context) -> UIActivityIndicatorView {
        UIActivityIndicatorView(style: .medium)
    }

    func updateUIView(_ uiView: UIActivityIndicatorView, context: Context) {
        uiView.startAnimating()
    }
}

SwiftUI 适合新页面与轻量功能,核心是把状态管理清楚,再去做复杂 UI。

JJ

作者简介

专注于内容创作、产品策略与设计实践。欢迎交流合作。

上一篇 下一篇