添加标准Scrollview时,我可以滚动到列表的末尾而没有任何问题,这是在按钮上添加了GeometryReader之后,滚动列表不会滚动到列表的末尾,而是停在列表的顶部我的按钮。 geometryReader不能缩放到子对象的大小,如何在不为GeometryReader指定硬编码帧大小的情况下更改此大小?我使用GeometryReader稍后通过 geo.frame(in:.global).maxY
来标识按钮的顶部与屏幕上的位置相对应VERBOSE: Parameter name 'LogFolder' value '\\myComputerName\Log'
VERBOSE: Parameter name 'ComputerName' value 'PC1', 'myComputerName'
当检查高度并尝试将GeometryReader的框架设置为等于按钮的高度时,该按钮也会给我0作为值。当我尝试使用 geo.frame.width 读取按钮的宽度时,它为我提供了正确的值。
struct scroll: View {
private var gridItemLayout = [GridItem(.flexible()), GridItem(.flexible())]
var body: some View {
ScrollView {
VStack {
LazyVGrid(columns: gridItemLayout) {
Circle()
.scaledToFill()
.foregroundColor(.red)
Circle()
.scaledToFill()
.foregroundColor(.green)
Circle()
.scaledToFill()
.foregroundColor(.blue)
Circle()
.scaledToFill()
.foregroundColor(.yellow)
}
GeometryReader { geo in
Button(action: {
}) {
Text("Adjust time")
}
.cornerRadius(18.0)
.padding(.top, 5)
}
//.frame(width: .infinity, height: 50)
}
}
}
}
答案 0 :(得分:1)
您可以通过将GeometryReader
放在按钮的背景中来阅读,例如
Button(action: {
}) {
Text("Adjust time")
}
.cornerRadius(18.0)
.padding(.top, 5)
.background(GeometryReader { geo in
// geo.frame(in: .global).maxY // << global position of button
})
您甚至可以将其存储在视图首选项中以进入状态,例如https://stackoverflow.com/a/62466397/12299030。