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])! }}
更新
@Hamish的答案有效,但我最初的意图是不使用UIcolor或NScolor,以便我的代码可以在iOS和&苹果系统.我最终做的是这个……
#if os(iOS)import UIKit#elseif os(OSX)import Cocoa#endifextension 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,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,1.0)#endif
……这是一个很好的例子 – 有没有人得到更好的答案?
解决方法 这似乎是一个过渡性的beta问题.Github上的Swift repo包含一个extensive SDK overlay for CoreGraphics,包括一个新版本的CGcolor.components,其返回类型是Swift数组而不是UnsafePointer.它们如何使SDK覆盖工作的部分工作是API notes,它将一些底层C调用映射到双下划线的Swift方法,以便覆盖可以将它们包装在更Swifty接口中.
看起来beta 4和beta 5编译器选择了API注释更改,但不包括包含新版本组件的覆盖.据推测,未来的测试版(或最终的Swift 3.0 / Xcode 8.0版本)将包含现在github上的所有内容.
总结以上是内存溢出为你收集整理的核心图形 – Xcode 8 Beta 4 CGColor.components不可用全部内容,希望文章能够帮你解决核心图形 – Xcode 8 Beta 4 CGColor.components不可用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)