Swiftui 为什么VStack不能在带有scrollview的GeometryReader中工作?
在没有GeometryReader的情况下,我使用vStack的scrollview工作正常(在AppleTV中-我没有在iOS中测试) 然后我添加了geometryreader,VStack像ZStack一样“崩溃” 我能做些什么来解决这个问题?(是的,我需要geometryreader;)Swiftui 为什么VStack不能在带有scrollview的GeometryReader中工作?,swiftui,geometryreader,Swiftui,Geometryreader,在没有GeometryReader的情况下,我使用vStack的scrollview工作正常(在AppleTV中-我没有在iOS中测试) 然后我添加了geometryreader,VStack像ZStack一样“崩溃” 我能做些什么来解决这个问题?(是的,我需要geometryreader;) struct ContentView:View{ @状态变量偏移量:CGFloat=0 var body:一些观点{ 滚动视图(.vertical,showsIndicators:false){ VSta
struct ContentView:View{
@状态变量偏移量:CGFloat=0
var body:一些观点{
滚动视图(.vertical,showsIndicators:false){
VStack(对齐:。前导){
GeometryReader{geometry->中的任意视图
设newOffset=geometry.frame(in:.global).minY
如果newOffset!=self.offset{
self.offset=newOffset
打印(“新偏移”,新偏移)
}
返回任意视图(
中的ForEach(0..AnyView
//设newOffset=geometry.frame(in:.global).minY
//如果newOffset!=self.offset{
//self.offset=newOffset
//打印(“新偏移”,新偏移)
// }
//返回任意视图(
ForEach(0..让我假设您最初想要它(并且它不会破坏ScrollView布局和滚动)
var主体:一些视图{
滚动视图(.vertical,showsIndicators:false){
VStack(对齐:。前导){
ForEach(0..Color in
设newOffset=geometry.frame(in:.global).minY
如果newOffset!=self.offset{
self.offset=newOffset
打印(“新偏移”,新偏移)
}
返回颜色。清除
}
)
}
}
这正是我想要的,谢谢你,你是我的英雄!;)
struct ContentView: View {
@State var offset : CGFloat = 0
var body: some View {
ScrollView(.vertical, showsIndicators: false) {
VStack(alignment: .leading) {
GeometryReader { geometry -> AnyView in
let newOffset = geometry.frame(in: .global).minY
if newOffset != self.offset {
self.offset = newOffset
print("new offset",newOffset)
}
return AnyView (
ForEach (0..<5) { _ in
Text("umpf")
}
)
}
}
}
}
}
struct ContentView: View {
@State var offset : CGFloat = 0
var body: some View {
ScrollView(.vertical, showsIndicators: false) {
VStack(alignment: .leading) {
// GeometryReader { geometry -> AnyView in
// let newOffset = geometry.frame(in: .global).minY
// if newOffset != self.offset {
// self.offset = newOffset
// print("new offset",newOffset)
// }
// return AnyView (
ForEach (0..<5) { _ in
Text("umpf")
}
// )
// }
}
}
}
}
var body: some View {
ScrollView(.vertical, showsIndicators: false) {
VStack(alignment: .leading) {
ForEach (0..<5) { _ in
Text("umpf")
}
}.background(
GeometryReader { geometry -> Color in
let newOffset = geometry.frame(in: .global).minY
if newOffset != self.offset {
self.offset = newOffset
print("new offset",newOffset)
}
return Color.clear
}
)
}
}