kCGImageAlphaNone无法parsing的标识符在swift中

我想在Swift中使用CoreImage将图像/纹理(SpriteKit)转换为灰度:

我发现这个答案: https ://stackoverflow.com/a/17218546/836501我试图转换为iOS7 / 8的Swift

但是kCGImageAlphaNone不存在。 相反,我可以使用CGImageAlphaInfo.None但函数CGBitmapContextCreate()不喜欢它作为其最后一个参数。 我有义务使用枚举CGBitmapInfo但似乎没有kCGImageAlphaNone等价的内部。

这是错误的参数(最后一个)的完整行:

 var context = CGBitmapContextCreate(nil, UInt(width), UInt(height), 8, 0, colorSpace, kCGImageAlphaNone) 

我只需要在Swift中将UIImage转换为灰度。

您必须从CGImageAlphaInfo.None值创build一个struct CGBitmapInfo

 let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.None.rawValue) var context = CGBitmapContextCreate(nil, UInt(width), UInt(height), 8, 0, colorSpace, bitmapInfo) 

我相信最初的Objective-C代码是错误的。 kCGImageAlphaNone枚举值不是要传递的适当types,但Objective-C的types安全性较低(枚举是一个枚举),所以它工作。 kCGImageAlphaNone的原始值是0 ,所以传递CGBitmapInfo.allZerosCGBitmapInfo.ByteOrderDefault (都是原始值为0 )应该给你相同的结果。