提问者:小点点

有可能在SwiftUI渐变中给颜色添加“权重”吗?


为了做到这一点,我刚刚将背景设置为线性颜色渐变,如下所示(略):

private var grade=渐变(colors:[Color(“red”),Color(“blue”)])

。。。

.background(LinearGradient(gradient: grade, startPoint: .top, endPoint: .bottom))

我希望渐变是‘红移’时,用户增加的数字在圆圈(通过拖动小圆圈),并‘蓝移’时,它是一个较低的数字。

我尝试过的一件事是将颜色设置为一个非常大的数组,开始时一半是颜色(“红色”),一半是颜色(“蓝色”); 然后我想我可以随着用户的拖动改变红色的数量; 然而,这也减少了应用的渐变量(它看起来更像一个红框和一个蓝框,而不是渐变)。 虽然它在较小的范围内工作,所以我将颜色设置为[Color(“red”),Color(“red”),Color(“blue”)],以显示我可能希望它在较大的数字下看起来的样子:

但我希望这种效果是持续的(或有效的持续)。

我希望这能证明我正在努力实现的目标,一如既往,谢谢你的帮助!


共1个答案

匿名用户

下面是一个可能的解决方案。 使用Xcode 11.4/iOS 13.4进行测试

注意:当然,参数可以根据您的需要进行修改

struct DemoGradientShift: View {
    private var grade = Gradient(colors: [.red, .blue])
    @State private var value: CGFloat = 50
    var body: some View {
        ZStack {
            VStack {
                Rectangle().fill(Color.red)
                Rectangle().fill(Color.blue)
            }
            Rectangle().fill(LinearGradient(gradient: grade, startPoint: .top, endPoint: .bottom))
                .offset(x: 0, y: 5 * (50 - value))
            Slider(value: $value, in: 1...100)
        }
        .edgesIgnoringSafeArea(.all)
    }
}