我有一个几何读取器,可以在用户滚动时跟踪我的应用栏的位置。但是,连同应用程序栏的正确位置,此代码也将打印数字44.0,即使它不应该如此。有人知道为什么吗?
NavigationView{
TabView{
ScrollView(.vertical, showsIndicators: false) {
VStack(spacing: 0) {
GeometryReader { geo in
appBar().onReceive(self.time){(_) in
let y = geo.frame(in: .global).minY
print(y)
if y < 0{
print("shown")
}else {
print("not")
}
}
}.frame(height: 182)
}
//
//rest of view
//
}.tabItem({Image("home")})
.background(Color("MyWhite"))
.navigationBarTitle("")
.navigationBarHidden(true)
}
}
我的输出
26.0 不 44.0 不 9.5 不 44.0 不 -9.5 显示 44.0 不 -21.0 显示 44.0 不 -27.0 显示 44.0 不是
应该是
26.0 不 9.5 不 -9.5 显示 -21.0 显示 -27.0 显示
应用栏
struct appBar : View {
var body: some View{
VStack (spacing: 0){
HStack {
VStack {
Text("Discover")
.font(Font.custom("Nunito-Bold", size: 42))
Text("California")
.font(Font.custom("Nunito-Bold", size: 18))
}
Spacer()
Image("skyline").resizable().aspectRatio(contentMode: .fill).frame(width: 40, height: 40).cornerRadius(20)
}
.padding(.bottom, 24)
.padding(.top, 12)
TextField("Search", text: self.$search)
.padding([.top, .leading, .bottom], 9.0)
.font(Font.custom("Nunito-Bold", size: 16))
.padding(.bottom, 24)
}.padding(.horizontal, 16).frame(height: 182)
}
}