我读到Spacer((不适用于onTapGesture,因为它需要可见/不透明的视图(?(。
这是我的代码片段。
HStack {
SideMenuView(dark: self.$dark, show: self.$show, navigationManager: navigationManager)
.preferredColorScheme(self.dark ? .dark : .light)
.offset(x: self.show ? 0 : -UIScreen.main.bounds.width / 1.2)
Spacer(minLength: 0)
}
.background(Color.primary.opacity(self.show ? (self.dark ? 0.05 : 0.2) : 0).edgesIgnoringSafeArea(.all))
.onTapGesture {
withAnimation(.default) {
show.toggle()
}
}
我想解决的是让侧边栏旁边的额外空间可以点击(这样它就可以折叠(。使用当前代码,屏幕上任何没有接收到输入的地方都会触发TapGesture(侧边栏中的文本标签,旁边有额外的空间(
这里有我错过的风景吗?或者我需要添加一个Rectangle((并计算额外的空间吗?
请参阅.contentShape
,它允许您指定命中区域。
我经常看到的另一个解决方案是使用几乎透明的颜色。像SwiftUIX所做的,例如Color.almostClear
因为那样它看起来仍然是透明的,但可以打击