相关疑难解决方法(0)

当我试图在swift中绘制渐变时出现问题

我在Swift代码中尝试绘制渐变时遇到错误:

GradientView.swift:31:40:找不到接受提供的参数的'__conversion'的重载

这是我的代码:

let context: CGContextRef = UIGraphicsGetCurrentContext()
let locations: CGFloat[] = [ 0.0, 0.25, 0.5, 0.75 ]
let colors = [UIColor.redColor().CGColor, UIColor.greenColor().CGColor,UIColor.blueColor().CGColor, UIColor.yellowColor().CGColor]
let colorspace: CGColorSpaceRef = CGColorSpaceCreateDeviceRGB()
let gradient: CGGradientRef = CGGradientCreateWithColors(colorspace, colors, locations)
//CGGradientCreateWithColors(colorspace,colors,locations)
let startPoint: CGPoint = CGPointMake(0, 0)
let endPoint: CGPoint = CGPointMake(500,500)
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
Run Code Online (Sandbox Code Playgroud)

问题是CGGradientCreateWithColors采用CFArray而不是普通的Swift数组.我不知道如何将CFArray转换为Array,并且在Apple的文档中找不到任何内容.任何的想法?谢谢

core-graphics ios swift

7
推荐指数
1
解决办法
9421
查看次数

CGGradient问题与swift 3

只是在将我的代码从swift 2.3转换为3的过程中.在旧代码中,我通过以下代码创建了一个渐变:

        let colours:CFArrayRef = [tColour.CGColor, bColour.CGColor]
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let gradient = CGGradientCreateWithColors(colorSpace, colours, nil)
Run Code Online (Sandbox Code Playgroud)

当Xcode 8转换代码时,它将其更改为以下内容:

    let colours:CFArray = [tColour.cgColor, bColour.cgColor]
    let colorSpace = CGColorSpaceCreateDeviceRGB()
    let gradient = CGGradient(colorsSpace: colorSpace, colors: colours, locations: nil)
Run Code Online (Sandbox Code Playgroud)

但是,代码会产生以下错误:

上下文类型"CFArray"不能与数组文字一起使用

任何人都可以建议如何正确转换代码.
感谢
Reza

swift3 ios10 xcode8

6
推荐指数
1
解决办法
5169
查看次数

使用CGGradient的PaintCode StyleKit Swift 3.0错误

StyleKit代码:

static let red: UIColor = UIColor(red: 0.800, green: 0.000, blue: 0.000, alpha: 1.000)
static let blue: UIColor = UIColor(red: 0.200, green: 0.600, blue: 1.000, alpha: 1.000)
static let green: UIColor = UIColor(red: 0.000, green: 0.600, blue: 0.200, alpha: 1.000)
static let yinying: UIColor = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 0.200) static let redGradient: CGGradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [UIColor.whiteColor().CGColor, UIColor.whiteColor().blendedColorWithFraction(0.5, ofColor: StyleKitMarkSix.red).CGColor, StyleKitMarkSix.red.CGColor], [0, 0, 1])!
static let blueGradient: CGGradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [UIColor.whiteColor().CGColor, UIColor.whiteColor().blendedColorWithFraction(0.5, ofColor: StyleKitMarkSix.blue).CGColor, StyleKitMarkSix.blue.CGColor], [0, 0, …
Run Code Online (Sandbox Code Playgroud)

swift swift3

3
推荐指数
1
解决办法
1151
查看次数

标签 统计

swift ×2

swift3 ×2

core-graphics ×1

ios ×1

ios10 ×1

xcode8 ×1