首页 > 解决方案 > SwiftUI - drawingGroup() 改变颜色

问题描述

当我应用 .drawingGroup() 修饰符以提高性能时,为什么我的颜色会改变/反转?

看起来他们几乎是在倒置。从红到黑

如果我//(不知道术语,散列??)如果不清楚,我没有收到任何错误消息并且代码按预期工作。

struct ColorCyclingCircle: View {
    var amount = 0.0
    var steps = 100
    
    var body: some View {
        ZStack {
            ForEach(0..<steps) { value in
                Circle()
                    .inset(by: CGFloat(value))
                    .strokeBorder(LinearGradient(gradient: Gradient(colors: [
                        self.color(for: value, brightness: 1),
                        self.color(for: value, brightness: 0.5)
                    ]), startPoint: .top, endPoint: .bottom), lineWidth: 2)
            }
        
        }
        .drawingGroup()
    }
    
    func color(for value: Int, brightness: Double) -> Color {
        var targetHue = Double(value) / Double(self.steps) + self.amount
        
        if targetHue > 1 {
            targetHue -= 1
        }
        
        return Color(hue: targetHue, saturation: 1, brightness: brightness)
        
    }
}

.drawingGroup()

// .drawingGroup()

标签: swiftuidrawingmetal

解决方案


推荐阅读