Несмотря на то, что предыдущий код работал ранее, он прекратил работать в Xcode 8 Beta 4, предположительно потому, что возврат components
был очень неуправляемым 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])!
}
}
Update @ ответов работ Хэмиш, но мое первоначальное намерение было не использовать UIColor ни NSColor так, что мой код работает в обоих прошивкой & 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 не имеет прямого Init от CGColor и CIColor имеет, а также имеет свойства '.red',' .green', '.blue' и' .alpha'. Вы хотите ответить на этот вопрос? – Grimxn