仅当用户点击圆圈而不是在 SwiftUI 中圆圈的所有框架内时,如何才能使 onTapGesture 起作用?

5 swiftui

我正在使用这个向下代码来读取用户在 Circle 上的点击,问题是它适用于帧 100X100 的所有部分,但我希望它只适用于颜色填充的 Circle,我该如何解决这个问题?

    struct ContentView: View {
    

    var body: some View {

        
        Circle()
            .fill(Color.red)
            .frame(width: 100, height: 100, alignment: .center)
            .onTapGesture {
                print("tap")
            }
  
    }
}
Run Code Online (Sandbox Code Playgroud)

nic*_*rno 3

一个不错的小技巧是向圆圈添加一个背景层(它不能 100% 清晰,否则无法渲染,所以我将其不透明度设置为 0.0001,看起来很清晰),然后在该层上添加另一个 tapGesture。新手势将在背景区域中优先,我们可以不执行任何操作就将其保留,这样就不会发生任何事情。

Circle()
    .fill(Color.red)
    .frame(width: 100, height: 100, alignment: .center)
    .background(
        Color.black.opacity(0.0001).onTapGesture { }
    )
    .onTapGesture {
        print("tap")
    }
Run Code Online (Sandbox Code Playgroud)