ColorPicker默认的按钮样式是圆形,如下所示。
我想将圆形按钮的样式更改为矩形。但似乎没有 API 可以改变它的风格。所以我在它上面放了一个矩形,并将它的 allowedHitTesting 设置为 false 以将单击事件传输到 ColorPicker。
struct ColorPickerView: View {
@State private var colorValue = Color.orange
var body: some View {
ZStack() {
ColorPicker("", selection: $colorValue)
.labelsHidden()
Rectangle()
.foregroundColor(.blue)
.frame(width: 40, height: 40, alignment: .center)
.allowsHitTesting(false)
}
}
}
但是点击后ColorPicker没有出现。
我在矩形下面放了一个圆圈来测试allowsHitTesting是否有用。它可以正常响应点击手势打印“Circle tapped!”。
struct ColorPickerView: View {
@State private var colorValue = Color.orange
var body: some View {
ZStack() {
ColorPicker("", selection: $colorValue)
.labelsHidden()
Rectangle()
.foregroundColor(.blue)
.frame(width: 40, height: 40, alignment: .center)
.onTapGesture {
print("Circle tapped!")
}
Rectangle()
.foregroundColor(.blue)
.frame(width: 40, height: 40, alignment: .center)
.allowsHitTesting(false)
}
}
}
为什么ColorPicker无法响应点击手势?或者有没有办法自定义ColorPicker按钮?