几何读取器返回的值不正确

时间:2020-09-14 00:13:15

标签: swiftui

我有一个几何读取器,可以在用户滚动时跟踪我的应用栏的位置。但是,连同应用程序栏的正确位置,此代码也将打印数字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)
        
    }
}
     

0 个答案:

没有答案