mar*_*ars 7 color-picker swiftui
ColorPicker默认的按钮样式是圆形,如下所示。
\n\n我想将圆形按钮的样式更改为矩形。但似乎没有 API 可以改变它的风格。所以我在它上面放了一个矩形,并将它的 allowedHitTesting 设置为 false 以将单击事件传输到 ColorPicker。
\n\nstruct ColorPickerView: View {\n @State private var colorValue = Color.orange\n var body: some View {\n ZStack() {\n ColorPicker("", selection: $colorValue)\n .labelsHidden()\n Rectangle()\n .foregroundColor(.blue)\n .frame(width: 40, height: 40, alignment: .center)\n .allowsHitTesting(false)\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n但是点击后ColorPicker没有出现。
\n我在矩形下面画了一个圆圈来测试 allowedHitTesting 是否有用。它可以正常响应点击手势打印“Circle tapped!”。
\nstruct ColorPickerView: View {\n @State private var colorValue = Color.orange\n var body: some View {\n ZStack() {\n ColorPicker("", selection: $colorValue)\n .labelsHidden()\n Rectangle()\n .foregroundColor(.blue)\n .frame(width: 40, height: 40, alignment: .center)\n .onTapGesture {\n print("Circle tapped!")\n }\n Rectangle()\n .foregroundColor(.blue)\n .frame(width: 40, height: 40, alignment: .center)\n .allowsHitTesting(false)\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n为什么ColorPicker无法响应点击手势?或者有没有办法自定义ColorPicker按钮\xef\xbc\x9f
\nuse*_*ser 16
只需使用opacity,并将ColorPicker发送到overlay,如代码所示:

struct SquareColorPickerView: View {
@Binding var colorValue: Color
var body: some View {
colorValue
.frame(width: 40, height: 40, alignment: .center)
.cornerRadius(10.0)
.overlay(RoundedRectangle(cornerRadius: 10.0).stroke(Color.white, style: StrokeStyle(lineWidth: 5)))
.padding(10)
.background(AngularGradient(gradient: Gradient(colors: [.red,.yellow,.green,.blue,.purple,.pink]), center:.center).cornerRadius(20.0))
.overlay(ColorPicker("", selection: $colorValue).labelsHidden().opacity(0.015))
.shadow(radius: 5.0)
}
}
Run Code Online (Sandbox Code Playgroud)
使用案例:
struct ContentView: View {
@State private var colorValue = Color.orange
var body: some View {
SquareColorPickerView(colorValue: $colorValue)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3584 次 |
| 最近记录: |