如何在SwiftUI中使用径向渐变填充路径
我试图用径向渐变填充路径,但不管我怎么做,它总是以一种纯色结束(如下图所示)。它应该从红色变为蓝色 如何在SwiftUI中使用径向渐变填充路径?我做错了什么 谢谢大家!如何在SwiftUI中使用径向渐变填充路径,swift,swiftui,Swift,Swiftui,我试图用径向渐变填充路径,但不管我怎么做,它总是以一种纯色结束(如下图所示)。它应该从红色变为蓝色 如何在SwiftUI中使用径向渐变填充路径?我做错了什么 谢谢大家! 事实证明,UnitPoint的x和y是介于0和1之间的值。一些简单的数学解决了这个问题 这项工作: struct ContentView: View { private let x: Double = 200.0 private let y: Double = 200.0 private let ra
事实证明,
UnitPoint
的x
和y
是介于0和1之间的值。一些简单的数学解决了这个问题
这项工作:
struct ContentView: View {
private let x: Double = 200.0
private let y: Double = 200.0
private let radius: CGFloat = 100.0
var body: some View {
GeometryReader { geo in
Rectangle()
.foregroundColor(Color.black)
Path { path in
path.addArc(center: CGPoint(x: self.x, y: self.y), radius: self.radius, startAngle: .degrees(0), endAngle: .degrees(360), clockwise: true)
}
.fill(RadialGradient(
gradient: Gradient(colors: [.red, .blue]),
center: UnitPoint(
x: CGFloat(self.x / Double(geo.size.width)),
y: CGFloat(self.y / Double(geo.size.height))
),
startRadius: self.radius * 0.30,
endRadius: self.radius
))
}
}
}
尝试<代码>中心:中心 @ KoeN,它看起来好像在屏幕中间的渐变中心。我需要的是梯度在圆的中心。啊,是的。现在不在Mac上,因此无法测试它。
struct ContentView: View {
private let x: Double = 200.0
private let y: Double = 200.0
private let radius: CGFloat = 100.0
var body: some View {
GeometryReader { geo in
Rectangle()
.foregroundColor(Color.black)
Path { path in
path.addArc(center: CGPoint(x: self.x, y: self.y), radius: self.radius, startAngle: .degrees(0), endAngle: .degrees(360), clockwise: true)
}
.fill(RadialGradient(
gradient: Gradient(colors: [.red, .blue]),
center: UnitPoint(
x: CGFloat(self.x / Double(geo.size.width)),
y: CGFloat(self.y / Double(geo.size.height))
),
startRadius: self.radius * 0.30,
endRadius: self.radius
))
}
}
}