雖然以前的代碼工作,它已停止工作在Xcode 8 Beta 4,可能是因爲components
返回是一個非Swift-y C浮點數組,並已除去。該錯誤是禿頂 - 「'組件'不可用」 - 我找不到替代它,如果有的話。有誰知道如何產生相同的功能?Xcode 8 Beta 4 CGColor.components不可用
public var cgColour: CGColor {
get {
return CGColor(red: self.colourRed, green: self.colourGreen, blue: self.colourBlue, alpha: self.colourAlpha)
}
set {
let comps = newValue.components // No longer available
self.colourRed = (comps?[0])!
self.colourGreen = (comps?[1])!
self.colourBlue = (comps?[2])!
self.colourAlpha = (comps?[3])!
}
}
更新 @哈米什的答案的作品,但我的初衷是不使用的UIColor也不NSColor讓我的代碼工作中不論是iOS & MacOS的。我已經結束了做的是這個...
#if os(iOS)
import UIKit
#elseif os(OSX)
import Cocoa
#endif
extension CGColor {
var components: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var r: CGFloat = 0
var g: CGFloat = 0
var b: CGFloat = 0
var a: CGFloat = 0
#if os(iOS)
UIColor(cgColor: self).getRed(&r, green: &g, blue: &b, alpha: &a)
#elseif os(OSX)
NSColor(cgColor: self)?.getRed(&r, green: &g, blue: &b, alpha: &a)
#endif
return (r, g, b, a)
}
}
// Playground code to test...
#if os(iOS)
let rgba = UIColor.brown.cgColor.components //(0.6, 0.4, 0.2, 1.0)
#elseif os(OSX)
let rgba = NSColor.brown.cgColor.components //(0.6, 0.4, 0.2, 1.0)
#endif
...這是這樣一個雜牌 - 有沒有人有一個更好的答案?
只需使用SKColor –
https://developer.apple.com/reference/spritekit/skcolor –
絕妙的主意 - 但實際上CIColor是一個更好的調用,如SKColor具有CGColor沒有直接初始化,並CIColor具有並且具有'.red','.green','。blue'和'.alpha'屬性。你想做出答案嗎? – Grimxn