如何解决在SwiftUI中单击带有Geometry Reader的Card时隐藏标签栏
我正在使用自定义的Tabbar,并实现了与在iOS的App Store上找到的相同动画,当您在“今日视图”中单击某张卡片时。
卡扩展后,我想隐藏标签栏。目前,我正在用bool var隐藏它。但是,当我单击其中一张卡片时,整个“几何阅读器”都会关闭。
这是一个包含Tabbar和HomeView的类,在其中实现了带有卡片的列表
struct AppCoordinator: View {
@State var index = 0
@State var showTabbar = true
var body: some View {
ZStack(alignment: .bottom) {
if self.index == 0 {
HomeView(showTabbar: self.$showTabbar)
.padding(.bottom,-10)
} else if self.index == 1 {
Text("Order View")
} else if self.index == 2 {
Text("Settings View")
}
CustomTabBar(index: self.$index)
.isHidden(!showTabbar)
}.edgesIgnoringSafeArea(.bottom)
}
}
这是几何图形阅读器所在的HomeView
struct HomeView: View {
@ObservedObject var model = HomeViewModel()
@State var index = 0
@State var hero = false
@Binding var showTabbar: Bool
var body: some View {
ZStack(alignment: .bottom) {
VStack{
ScrollView(.vertical,showsIndicators: false) {
HomeTopMenue(index: $index)
.padding()
VStack(alignment: .center,spacing: 30) {
ForEach(0..<self.model.meals.count,id: \.self){i in
GeometryReader{g in
CardView(meal: self.$model.meals[i],hero: self.$hero)
.offset(y: self.model.meals[i].getExpanded() ? -g.frame(in: .global).minY : 0)
.opacity(self.hero ? (self.model.meals[i].getExpanded() ? 1 : 0) : 1)
.onTapGesture {
self.showTabbar.toggle()
withAnimation(.interactiveSpring(response: 0.5,dampingFraction: 0.8,blendDuration: 0)){
if !self.model.meals[i].getExpanded() {
self.hero.toggle()
if self.model.meals[i].expanded == nil {
self.model.meals[i].expanded = true
} else {
self.model.meals[i].expanded?.toggle()
}
}
}
}
}.frame(height: self.model.meals[i].getExpanded() ? UIScreen.main.bounds.height : 400)
}
}
}.statusBar(hidden: hero)
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。