Swift 带有错误的CGColor扩展';初始化(红色:绿色:蓝色:alpha)不可用';
我在这里有点迷路了。我正在编写CGColor的扩展,它从十六进制值(字符串)和可选的alpha值(CGFloat)返回CGColor。返回新的CGColor实例时,发生以下错误:Swift 带有错误的CGColor扩展';初始化(红色:绿色:蓝色:alpha)不可用';,swift,init,cgcolor,Swift,Init,Cgcolor,我在这里有点迷路了。我正在编写CGColor的扩展,它从十六进制值(字符串)和可选的alpha值(CGFloat)返回CGColor。返回新的CGColor实例时,发生以下错误: 'init(red:gee:blue:alpha)' is unavailable 提供了以下信息: “init(红色:绿色:蓝色:阿尔法:)”已在此处明确标记为不可用(CoreGraphics.CGColor) 以下是完整的扩展代码: 导入基础 导入核心图形 扩展CGColor{ ///从十六进制值和可选alpha
'init(red:gee:blue:alpha)' is unavailable
提供了以下信息:
//具有颜色的几何体对象
公共结构几何{
公共颜色:颜色
}
//几何体对象的颜色定义
公共结构颜色{
公共let id:ColorID
公共let值:字符串
公共let alpha:Int
//遗漏了一些代码
公共颜色:cgColor{
返回CGColor?.from(十六进制:值,阿尔法:阿尔法值)
}
}
如果使用框架的应用程序需要颜色:
let geometry=fromParsingFramework.geometry()
如果let color=geometry.color.cgColor
由于该初始值设定项仅适用于macOS,您可以使用以下内容替换该初始值设定项:
let comps = [r,g,b,alpha]
return CGColor(colorSpace: CGColorSpace(name: CGColorSpace.sRGB)!, components: comps)
如果您的框架只需要支持iOS 13+/macOS 10.15+,则可以使用新的初始值设定项:
return CGColor(srgbRed: r, green: g, blue: b, alpha: alpha)
您缺少部分错误:“init(红色:绿色:蓝色:alpha:)在iOS中不可用”。它仅适用于macOS。您是否尝试使用rgb值基本上改变对象的背景颜色?@maddy:该扩展用于自定义通用框架、iOS和macOS@Mike:我以后需要在SceneKit应用程序中使用CGColor。我基本上有一堆描述几何体对象的文本文件。其中一部分是描述为十六进制值的对象的颜色。通过解析这些文件,我想直接使用十六进制值来分配CGColor。您如何在代码中使用此扩展名?在iOS 13中,他可以使用
init(srgbRed-red:CGFloat,green:CGFloat,blue:CGFloat,alpha:CGFloat)
@matt-Yes,如果OP的框架仅支持iOS 13/macOS 10.15及更高版本,那么这将是一个很好的选择。@maddy:我刚刚查阅了文档。没有提到CGColor init(red:green:bblue:alpha)仅在macOS中可用。它甚至在框架下声明:iOS2+。“你能解释一下吗?”德克说