面试题答案
一键面试GeometryReader功能
GeometryReader可以让开发者获取其所在视图的大小和位置信息,在构建自适应布局时非常有用。它接收一个闭包,闭包参数为GeometryProxy
,通过这个代理能访问视图的几何属性,如size
、safeAreaInsets
等。
Spacer功能
Spacer用于在视图之间创建弹性间距,它会尽可能地占用剩余空间,可用于水平或垂直方向布局,使得视图之间的间距能够根据可用空间自动调整。
区别
- GeometryReader侧重于获取视图几何信息以实现自适应布局;Spacer侧重于在视图间创建弹性间距来调整布局。
示例
- 使用GeometryReader获取视图大小
import SwiftUI
struct ContentView: View {
var body: some View {
GeometryReader { geometry in
VStack {
Text("Width: \(geometry.size.width)")
Text("Height: \(geometry.size.height)")
}
}
}
}
上述代码中,GeometryReader通过闭包中的geometry
获取了其所在视图的宽度和高度,并显示在Text视图中。
- 使用Spacer在两个视图之间创建弹性间距
import SwiftUI
struct ContentView: View {
var body: some View {
HStack {
Text("Left View")
Spacer()
Text("Right View")
}
}
}
在这个HStack布局中,Spacer将尽可能地占用中间剩余空间,使得左右两个Text视图分别靠向两侧。