Io 快速对角线矩形中的半径

Io 快速对角线矩形中的半径,io,swiftui,linear-gradients,Io,Swiftui,Linear Gradients,问题:我试图在SwiftUI中渲染矩形形状中的对角线线性渐变 我实现了一个标准的多站线性渐变,当渲染为正方形时效果很好,但是当我将帧更改为矩形时,它有一些奇怪的行为,看起来更水平,或者有一些奇怪的剪辑 代码: 如果将预览渲染为正方形,则效果良好 预览: 代码: 但是,如果我将预览帧更改为.frame(宽度:300,高度:100),则渲染不正确(IMO): 如何获得在矩形和正方形中从一个角到另一个角渲染的渐变?这是一种正常行为。这甚至不是一个迅捷的问题。问题是,你在一个较小的高度上拉伸相同的颜

问题:我试图在SwiftUI中渲染矩形形状中的对角线线性渐变

我实现了一个标准的多站线性渐变,当渲染为正方形时效果很好,但是当我将帧更改为矩形时,它有一些奇怪的行为,看起来更水平,或者有一些奇怪的剪辑

代码:

如果将预览渲染为正方形,则效果良好 预览:

代码:

但是,如果我将预览帧更改为
.frame(宽度:300,高度:100)
,则渲染不正确(IMO):


如何获得在矩形和正方形中从一个角到另一个角渲染的渐变?

这是一种正常行为。这甚至不是一个迅捷的问题。问题是,你在一个较小的高度上拉伸相同的颜色,因此颜色的分布会少很多,因此紫色不会像在正方形中那样在边缘消失(只是没有足够的空间)

我把你的担忧带到了一个专业工具上,比如
adobexd
Photoshop
,结果与
xCode
相同。我只发布
adobexd
结果,你可以在线或离线在任何渐变生成器上运行相同的测试


希望这能有所帮助。

这是正常行为。这甚至不是一个迅捷的问题。问题是,你在一个较小的高度上拉伸相同的颜色,因此颜色的分布会少很多,因此紫色不会像在正方形中那样在边缘消失(只是没有足够的空间)

我把你的担忧带到了一个专业工具上,比如
adobexd
Photoshop
,结果与
xCode
相同。我只发布
adobexd
结果,你可以在线或离线在任何渐变生成器上运行相同的测试

希望这有点帮助

struct CustomGradient: View {

    var body: some View {
        LinearGradient(
            gradient: Gradient(stops: [
                .init(color: Color(#colorLiteral(red: 0.776, green: 0.266, blue: 0.988, alpha: 1)), location: 0),
                .init(color: Color(#colorLiteral(red: 0.356, green: 0.348, blue: 0.870, alpha: 1)), location: 0.62),
                .init(color: Color(#colorLiteral(red: 0.357, green: 0.349, blue: 0.870, alpha: 1)), location: 1)
            ]),
            startPoint: .bottomTrailing,
            endPoint: .topLeading
        )
    }
struct BrandGradient_Previews: PreviewProvider {
    static var previews: some View {
        BrandGradient()
            .frame(width: 300, height: 300)
    }
}