一、frame是什么
在SwiftUI中,frame()是一个modifier,modifier在SwiftUI中并不是真的修改了view。大多数情况下,当我们对某个view应用一个modifier的时候,实际上会创建一个新的view。当某个view的frame改变并不是尺寸的改变,而是建议大小的改变,实际尺寸会受到内容和其它布局约束的影响。
struct ContentView: View {
var body: some View {
VStack(spacing:10){
Text("你好")
.background(.red)
.frame(width: 100,height: 200)
}
}
}
你看到的并不是是一个100*200的红色背景,而是一个字体大小的红色背景。
下面有几种情况
struct ContentView: View {
var body: some View {
VStack(spacing:10){
Text("测试1")
.frame(width: 100)
.background(.red)
Text("测试2")
.background(.red)
.frame(width: 100)
Text("测试3")
.background(.red)
.frame(maxWidth: 100)
Text("测试4")
.frame(maxWidth: 100)
.background(.red)
Text("测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4测试4")
.fixedSize(horizontal: true, vertical: false)
.frame(maxWidth: 100)
.background(.red)
Text("测试5")
.frame(maxWidth: 100)
.background(.red)
.fixedSize(horizontal: true, vertical: false)
}
}
}
``
。。。。。。。。