为了做到这一点,我刚刚将背景设置为线性颜色渐变,如下所示(略):
private var grade=渐变(colors:[Color(“red”),Color(“blue”)])
。。。
.background(LinearGradient(gradient: grade, startPoint: .top, endPoint: .bottom))
我希望渐变是‘红移’时,用户增加的数字在圆圈(通过拖动小圆圈),并‘蓝移’时,它是一个较低的数字。
我尝试过的一件事是将颜色设置为一个非常大的数组,开始时一半是颜色(“红色”),一半是颜色(“蓝色”); 然后我想我可以随着用户的拖动改变红色的数量; 然而,这也减少了应用的渐变量(它看起来更像一个红框和一个蓝框,而不是渐变)。 虽然它在较小的范围内工作,所以我将颜色设置为[Color(“red”),Color(“red”),Color(“blue”)],以显示我可能希望它在较大的数字下看起来的样子:
但我希望这种效果是持续的(或有效的持续)。
我希望这能证明我正在努力实现的目标,一如既往,谢谢你的帮助!
下面是一个可能的解决方案。 使用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)
}
}