SwiftUI 裁剪图片后被裁剪部分仍然可以点击的解决办法

图片裁剪前

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct TestView:View {
@State var count = 0

var body: some View {
Image(systemName: "cube")
.resizable()
.scaledToFill()
.frame(width: 200, height: 200)
// .clipped()
.onTapGesture {
print("tapped mainContainer\(count)\n")
count += 1
}
}
}

去掉 .clipped() 注释后:

但是被裁剪掉的部分仍然可以触发点击事件。解决办法,添加 .contentShape(Rectangle())

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct TestView:View {
@State var count = 0

var body: some View {
Image(systemName: "cube")
.resizable()
.scaledToFill()
.frame(width: 200, height: 200)
.clipped()
.contentShape(Rectangle())
.onTapGesture {
print("tapped mainContainer\(count)\n")
count += 1
}
}
}

SwiftUI 裁剪图片后被裁剪部分仍然可以点击的解决办法
https://wonderhoi.com/2024/12/02/SwiftUI-裁剪图片后被裁剪部分仍然可以点击的解决办法/
作者
wonderhoi
发布于
2024年12月2日
许可协议