Как получить цвет пикселя ниже сенсорного в SwiftUI? - PullRequest
0 голосов
/ 20 апреля 2020

Я создал собственный цветовой круг, используя смесь различных компонентов.

Вот как это выглядит:

enter image description here

И вот как он создается:

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)
    }
}

Как я могу перетащить колесо и получить цвет пикселя, который находится прямо под моим пальцем?

Спасибо.

...