Ios Swift-如何创建非像素径向渐变?

Ios Swift-如何创建非像素径向渐变?,ios,swift,core-graphics,Ios,Swift,Core Graphics,我正在尝试为我的应用程序创建一个径向/圆形渐变 我使用了与确认答案类似的解决方案 但是,生成的渐变看起来是像素化的 我做错了什么?是否有更现代的方法或良好的第三方框架来创建平滑、简单的径向渐变 谢谢 我的代码(基于堆栈溢出时发布的代码段): 您需要确保设备屏幕的CGContext已缩放 看看这个问题的答案- 这将帮助您解决问题。您需要确保CGContext在屏幕上缩放-查看一下Thank@zappiDev!这就是问题所在。请发表作为一个答案,我会接受它。好的,我已经添加了它。很高兴帮助你。 cl

我正在尝试为我的应用程序创建一个径向/圆形渐变

我使用了与确认答案类似的解决方案

但是,生成的渐变看起来是像素化的

我做错了什么?是否有更现代的方法或良好的第三方框架来创建平滑、简单的径向渐变

谢谢

我的代码(基于堆栈溢出时发布的代码段):


您需要确保设备屏幕的
CGContext
已缩放

看看这个问题的答案-


这将帮助您解决问题。

您需要确保
CGContext
在屏幕上缩放-查看一下Thank@zappiDev!这就是问题所在。请发表作为一个答案,我会接受它。好的,我已经添加了它。很高兴帮助你。
class RadialGradientLayer: CALayer {

    init(innerColor: UIColor, outerColor: UIColor) {
        self.innerColor = innerColor.CGColor
        self.outerColor = outerColor.CGColor

        super.init()

        needsDisplayOnBoundsChange = true
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("This class does not support NSCoding")
    }

    var innerColor: CGColor
    var outerColor: CGColor

    override func drawInContext(ctx: CGContext) {
        CGContextSaveGState(ctx)

        let colorSpace = CGColorSpaceCreateDeviceRGB()

        let locations:[CGFloat] = [0.0, 1.0]
        let colors = [innerColor, outerColor]

        let gradient = CGGradientCreateWithColors(colorSpace, colors, locations)

        let center = CGPoint(x: bounds.width / 2.0, y: bounds.height / 2.0)
        let radius = min(bounds.width / 2.0, bounds.height / 2.0)

        CGContextDrawRadialGradient(ctx, gradient, center, 0.0, center, radius, CGGradientDrawingOptions(rawValue: 0))
    }

}