swiftUI笔记之@State

看着15年的swift笔记,想当初自己也是一名swifter呢,今天正式回归到swift开发,完成一个桌面端的AI产品。当前swift已经使用swiftUI了,那么就从swiftUI重新开始吧

SwiftUI 提供了许多属性包装器,可用于更新/观察数据和重新加载视图。这些属性包装器为视图和可变数据之间的交互提供了多种方式。为了在 SwiftUI 中构建一个很棒的应用程序,对这些包装器有一个清晰的理解非常重要。

@State 基础

@State 是一个简单的属性,应该只用于整数、字符串、布尔值等原始类型。@State 包装器是更新 视图变量状态的最简单方法。如果我们在带有 @State 属性包装器的视图中创建一个属性,SwiftUI 会以不同的方式管理该属性的内存。只要视图存在,它就会将变量的值保留在内存中。每当状态发生更改时,SwiftUI 会自动使用更新的信息重新加载视图。

示例

确保使用@State 的对象属于单个视图,并且它们被标记为私有。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import SwiftUI
struct ContentView: View {
@State private var num: Int = 0
@State private var isIncreasing: Bool = false
var body: some View {
HStack {
Button(action: {
num -= 1
isIncreasing = false
}, label: {
Text("-")
})
.frame(width: 10, height: 10)
Text(isIncreasing ? "增加 to \(num)" : "减小 to \(num)")
.foregroundColor(.black)
Button(action: {
num += 1
isIncreasing = true
}, label: {
Text("+")
})
.frame(width: 12, height: 10)
}
}
}

在上面的例子中,有两个按钮’ + ‘和’-‘,分别增加和减少’ num ‘变量的值。状态变量 (num) 存储其先前的值并根据其状态更新视图。

简单理解就是 属性状态发生变化是,会自动更新UI