Coding学习路径 | SwiftUI 001
- Nicole Shi
- 6月4日
- 讀畢需時 2 分鐘
这个是Chaocode SwiftUI新手入门课程1-18个影片的笔记内容,做一些记录。一些概念都比较晦涩,需要在实操的时候反复琢磨。
调整器(Modifier)
有的只对套用的那一个view做改变,有的会改变所有包含在里面的view
有些调整前会叠加,有些只套用第一个(不会被覆盖)
大部分的调整前都是在View的extension中,使用后会回传一个新的View
调整器的位置很重要
View的排版过程
上层画面告诉下层画面自己有多少空间,并询问他们需要多少空间
下层画面回应自己想要的大小。他可以选择任何大小,不一定要配合上层提供的大小决定
上层根据收集到的所有大小,根据自己的排版规则来决定他们的位置在哪
大小由子view决定,位置由上层view决定
View的大小类型
Hugging:知道自己需要的大小是多少——text
Neutral:根据自己的子view决定——VStack Button
Expanding:想要尽可能占满所有空间——Color Image.resizable
x轴和y轴的大小可以不一样
Recap
SwiftUI基本架构
View & 调整器
@State
变形和转场动画
View的身份
SwiftUI如何排版 & View的大小类型
主题 | 涉及内容 |
SwiftUI 排版 | VStack, HStack, ScrollView, Grid, frame、spacing、clipped、Spacer |
状态管理 | @State, withAnimation, toggle(), binding 动画 |
过渡动画 | .transition(.asymmetric / .move + .opacity), .animation(.spring / easeInOut) |
自适应设计 | minimumScaleFactor, previewDevice, .frame(maxWidth: .infinity) |
资料的维持
程式执行是产生的资料被存在记忆体中
static var defaultValue: CGFloat = 300
资料随着程式或实例启动产生,也随着程式关闭或实例释放而消失
要延长资料的寿命,必须讲资料存到硬碟
UserDefults
Key-value pair
在程式启动时自动读入记忆体,提供快速存取
只能存Plist类型。(NSDate, NSString, NSNumber, NSDate, NSArray, NSDictionary)
系统管理储存的时间(不可预期)
在tvOS上最多储存1MB
Thread safe
预设的空回传值
AppStorage<Value>
存取UserDefaults中的某个值,并且在值产生变化是通知画面更新
支持基本类型:Bool, String, Data, Int, Double, URL
支援遵循 RawRepresentable 且 RawValue 为 String 或 Int
投射类型为 Binding<Value>
强制设定
在测试时,可以再Scheme中强制固定为某个值
SceneStorage
和AppStorage一样功能,但是存得值是变成属于单独Scene(视窗)的
底层不是UserDefaults且没有公开,只能透过这个属性包装存取
SceneStorage中的资料在Scene被关闭时消失
Comments