我正在使用一些形状在swiftui中创建一个自定义按钮。
作为一个最小的例子,我有一个填充矩形,由一个划圆(没有填充)包围。这个包在一个zstack中,并添加了一个tappershite。它是有效的,但我唯一的问题是正方形和圆形之间的空白是不可录制的。
如何使圆内的所有内容都可录制,而不向圆添加填充?
struct ConfirmButton: View {
var action: () -> Void
var body: some View {
ZStack {
Circle()
.stroke(Color.purple, lineWidth: 10.0)
.padding(5)
Rectangle()
.fill(Color.red)
.frame(width: 200, height: 200, alignment: .center)
}.gesture(
TapGesture()
.onEnded {
print("Hello world")
self.action()
}
)
}
}
最佳答案
你需要用modifier.contentShape()定义命中区域:
struct ConfirmButton: View {
var action: () -> Void
var body: some View {
ZStack {
Circle()
.stroke(Color.purple, lineWidth: 10.0)
.padding(5)
Rectangle()
.fill(Color.red)
.frame(width: 200, height: 200, alignment: .center)
}.contentShape(Circle())
.gesture(
TapGesture()
.onEnded {
print("Hello world")
self.action()
}
)
}
}