我使用ZStack在MapView上显示HStack。我面临的问题是用户触摸仍然可以从Hstack之间的间距响应MapView。我如何防止这种情况?我可以使用的一个技巧是设置不可见的背景颜色。第一个我也试过使用contentShape,但没有效果。处理这种情况的最好方法是什么?Image
ZStack
MapView
HStack
bxgwgixi1#
有两种方法可以解决这个问题:1.应该使用Color.black.opacity(0.0001)(即使是在每通道10位的显示器上)。这会产生一个非常透明的颜色,它对你的外观没有任何影响,以及一个填充框架的可点击区域。我不确定SwiftUI是否足够智能,可以跳过渲染颜色,所以我不确定它是否会影响性能。1.使用GeometryReader获取帧大小,然后使用contentShape生成可点击区域:
Color.black.opacity(0.0001)
GeometryReader { proxy in Color.clear.contentShape(Path(CGRect(origin: .zero, size: proxy.size))) }
1条答案
按热度按时间bxgwgixi1#
有两种方法可以解决这个问题:
1.应该使用
Color.black.opacity(0.0001)
(即使是在每通道10位的显示器上)。这会产生一个非常透明的颜色,它对你的外观没有任何影响,以及一个填充框架的可点击区域。我不确定SwiftUI是否足够智能,可以跳过渲染颜色,所以我不确定它是否会影响性能。1.使用GeometryReader获取帧大小,然后使用contentShape生成可点击区域: