我有一个"按钮",我需要使用.offset(y: someVal)
偏置到一个不同的位置.
我有我喜欢的视图布局,但命中区域似乎在应用偏移之前的区域.
这是我的代码:
var body: some View {
ZStack {
ZStack {
Circle()
.foregroundColor(.white)
Image(systemName: "someIcon")
.foregroundColor(myColor)
}
.frame(width: centerBtnRadius * 2, height: centerBtnRadius * 2)
.overlay(
RoundedRectangle(cornerRadius: centerBtnRadius)
.stroke(myColor, lineWidth: 1)
)
.onTapGesture {
//...
}
.onLongPressGesture(perform: {
//...
})
.offset(y: centerBtnOffsetY)
VStack {
Spacer()
Text(labelText)
.scaledToFit()
}
}
.frame(width: Constants.tbItemWidth, height: Constants.tbItemHeight)
}
现在,我已经try 将修饰符放在嵌套ZStack
上的其他修饰符之前,但没有成功.它也必须在.overlay
修改器之后,该修改器将我的边框定位在Circle()
周围.(如果边界需要成为解决方案的一部分,我也愿意接受让它变得不同的 idea !)
我的问题是:
我如何确保我的按下手势被整个圆元素捕捉到,在我用.offset
修饰符重新定位它之后??