2016-09-27 87 views
0

在升级到Swift 3和Xcode 8之前,我的StyleKit项目工作得非常好。这里是我的一些颜色代码:Swift 3- PaintCode StyleKit颜色错误

//// Color Declarations 
    let purplebliss1 = UIColor(red: 0.212, green: 0.000, blue: 0.200, alpha: 1.000) 
    let purplebliss2 = UIColor(red: 0.043, green: 0.529, blue: 0.576, alpha: 1.000) 

//// Color Declarations 
    let venice1 = UIColor(red: 0.522, green: 0.847, blue: 0.808, alpha: 1.000) 
    let venice2 = UIColor(red: 0.031, green: 0.314, blue: 0.471, alpha: 1.000) 
    let aqua1 = UIColor(red: 0.149, green: 0.816, blue: 0.808, alpha: 1.000) 
    let aqua2 = UIColor(red: 0.102, green: 0.161, blue: 0.502, alpha: 1.000) 


    //// Color Declarations 
    let mantle1 = UIColor(red: 0.141, green: 0.776, blue: 0.863, alpha: 1.000) 
    let mantle2 = UIColor(red: 0.318, green: 0.290, blue: 0.616, alpha: 1.000) 

但是,现在说的这几行代码包含一个错误:

//// Gradient Declarations 
let purpleBliss = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [purplebliss2.CGColor, purplebliss2.blendedColorWithFraction(0.5, ofColor: purplebliss1).CGColor, purplebliss1.CGColor], [0, 0.27, 1])! 

//// Gradient Declarations 
    let mantle = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [mantle1.CGColor, mantle2.CGColor], [0, 1])! 

//// Gradient Declarations 
    let veniceBeach = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [venice2.CGColor, venice1.CGColor], [0, 1])! 
    let aqua = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [aqua1.CGColor, aqua2.CGColor], [0, 1])! 

错误的一贯说法是:

contexttual type 'CFArray' cannot be used with array literal 

我不知道如何解决这个问题。有什么建议?

谢谢大家:)

+0

你需要从'.CGColor'改变'.cgColor' –

+0

他们答应十月份某个时候发布新版本,所以希望它会很快https://www.facebook.com/PixelCut/posts/1147467378652209 –

回答

1

(更新)尝试创建一个CFArray这样的:

let purpleBliss = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), 
            colors: [purplebliss2.cgColor, purplebliss2.blendedColorWithFraction(0.5, ofColor: purplebliss1).cgColor, purplebliss1.cgColor] as CFArray, 
           locations: [0, 0.27, 1])! 

其他梯度会是这样的:

let mantle = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), 
         colors: [mantle1.cgColor, mantle2.cgColor] as CFArray, 
         locations: [0, 1])! 

let veniceBeach = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), 
          colors: [venice2.cgColor, venice1.cgColor] as CFArray, 
          locations: [0, 1])! 

let aqua = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), 
         colors:[aqua1.cgColor, aqua2.cgColor] as CFArray, 
         locations: [0, 1])! 

综上所述,变化在更新到swift 3时要做的是:

  1. CGGradientCreateWithColors现在是CGGradient
  2. 您必须将参数的所有标签放在您的电话中(colorsSpacecolorslocations)。
  3. .CGColor现在是.cgColor
  4. 在Swift 3中隐式转换为桥接类型已被删除,所以你必须自己施放CFArray
+0

谢谢!其他渐变怎么样 - 我该怎么做? –

+0

同样的方法,你只需要将'CGGradientCreateWithColors'改成'CGGradient','.CGColor'改成'.cgColor',然后将数组转换为'CFArray'。我正在编辑我的答案,包括其他渐变:) – ACBM

+0

哦,非常感谢你这么多人!你是一个绝对的救生员 –