Я создал собственный цветовой круг, используя смесь различных компонентов.
Вот как это выглядит:
И вот как он создается:
struct ColorWheelRepresentable: UIViewRepresentable {
var radius: CGFloat
func makeUIView(context: Context) -> UIImageView {
let filter = CIFilter(name: "CIHueSaturationValueGradient", parameters: [
"inputColorSpace": CGColorSpaceCreateDeviceRGB(),
"inputDither": 0,
"inputRadius": radius * 0.4,
"inputSoftness": 0.8,
"inputValue": 1
])!
let image = UIImage(ciImage: filter.outputImage!)
let imageView = UIImageView()
imageView.image = image
return imageView
}
func updateUIView(_ uiView: UIImageView, context: Context) {}
}
struct CustomColorWheel: View {
var radius: CGFloat
var body: some View {
ZStack {
ColorWheelRepresentable(radius: radius)
.frame(width: radius, height: radius)
.clipShape(
Circle()
.size(CGSize(width: radius, height: radius))
)
.aspectRatio(1, contentMode: .fit)
.overlay(
Circle()
.size(CGSize(width: radius, height: radius))
.stroke(Color.init(red: 0.8, green: 0.8, blue: 0.8), lineWidth: radius * 0.025)
.shadow(color: Color.black.opacity(0.5), radius: radius * 0.045)
)
RadialGradient(gradient: Gradient(colors: [.white, .black]), center: .center, startRadius: 0, endRadius: radius/2 - 10)
.blendMode(.screen)
}
.rotationEffect(.degrees(240))
.frame(width: radius, height: radius)
}
}
Как я могу перетащить колесо и получить цвет пикселя, который находится прямо под моим пальцем?
Спасибо.