gpt4 book ai didi

swiftui - 如何在 SwiftUI 中将 Apple ColorPicker 的布局从 Circle 更改为 Square?

转载 作者:行者123 更新时间:2023-12-04 13:09:26 26 4
gpt4 key购买 nike

ColorPicker 的默认按钮样式是一个圆形,如下所示。
enter image description here
我想将圆形按钮的样式更改为矩形。但似乎没有 API 可以改变它的风格。所以我在它上面放了一个矩形,并将它的 allowedHitTesting 设置为 false 以将点击事件传输到 ColorPicker。
enter image description here

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)
}
}
}
但是点击后颜色选择器没有出现。
我在 Rectangle 下方放了一个圆圈来测试 allowedHitTesting 是否有用。它可以正常响应点击手势以打印“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按钮?

最佳答案

只需使用 opacity ,并发送 取色器 overlay ,就像在代码中一样:

enter image description here

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)

}
}

用例:
struct ContentView: View {

@State private var colorValue = Color.orange

var body: some View {

SquareColorPickerView(colorValue: $colorValue)

}
}

关于swiftui - 如何在 SwiftUI 中将 Apple ColorPicker 的布局从 Circle 更改为 Square?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67145122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com