【问题标题】:CGContextDrawRadialGradient in SwiftSwift 中的 CGContextDrawRadialGradient
【发布时间】:2014-07-03 19:20:40
【问题描述】:

我尝试绘制渐变点,但 CGGradientCreateWithColors 始终返回 nil。 我是 Swift 和 Objective C 的新手(从今天开始,但是用 Xamarin 制作了一些应用程序)。 谁能解释一下下面的代码有什么问题?

func initFields(){
    var startColor = UIColor.blueColor().CGColor
    var endColor = UIColor.greenColor().CGColor
    var colors: CFArray = [startColor, endColor]

    Gradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), colors, [0, 10])
}
func DrawSomething(){
    UIGraphicsBeginImageContext(frame.size)
    CGContextDrawRadialGradient(UIGraphicsGetCurrentContext(), Gradient!, TouchLocation!, 10, TouchLocation!, 10, 0)
}

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    来自CGGradientCreateWithColors() 文档:

    ...每个位置必须是 0 到 1 范围内的 CGFloat 值,包括 0 到 1。

    所以在创建渐变时将[0, 10]更改为[0, 1]

    位置 0 的颜色映射到起始圆,位置 1 的颜色 映射到结束圆。

    起始圆和结束圆相同似乎也很奇怪 在你的代码中。

    【讨论】:

    • 谢谢。这对获取渐变很有帮助。我也更改了它的结束位置。但它没有画任何东西,这就是我所要做的吗?开始一个 ImageContext 并调用 Draw 函数?
    • @NormanSchütt:UIGraphicsBeginImageContext 用于绘制位图(此处示例:stackoverflow.com/questions/4683448/…)。 - 对于 UIView 子类中的自定义绘图,您实现 drawRect:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2014-07-24
    相关资源
    最近更新 更多