在Objective-C中,CGBitmapInfo包含:
kCGBitmapAlphaInfoMask = 0x1F,
kCGBitmapFloatInfoMask = 0xF00,
kCGBitmapFloatComponents = (1 << 8),
kCGBitmapByteOrderMask = kCGImageByteOrderMask,
kCGBitmapByteOrderDefault = (0 << 12),
kCGBitmapByteOrder16Little = kCGImageByteOrder16Little,
kCGBitmapByteOrder32Little = kCGImageByteOrder32Little,
kCGBitmapByteOrder16Big = kCGImageByteOrder16Big,
kCGBitmapByteOrder32Big = kCGImageByteOrder32Big
但是,在Swift 3.0中,CGBitmapInfo删除了kCGBitmapByteOrderDefault:
public struct CGBitmapInfo : OptionSet {
public init(rawValue: UInt32)
public static var alphaInfoMask: CGBitmapInfo { get }
public static var floatInfoMask: CGBitmapInfo { get }
public static var floatComponents: CGBitmapInfo { get }
public static var byteOrderMask: CGBitmapInfo { get }
public static var byteOrder16Little: CGBitmapInfo { get }
public static var byteOrder32Little: CGBitmapInfo { get }
public static var byteOrder16Big: CGBitmapInfo { get }
public static var byteOrder32Big: CGBitmapInfo { get }
}
这就是为什么?
我可以初始化CGBitmapInfo
类似的东西CGBitmapInfo(rawValue: 0)
来替换kCGBitmapByteOrderDefault
吗?
我可以初始化CGBitmapInfo
类似的东西CGBitmapInfo(rawValue: 0)
来替换kCGBitmapByteOrderDefault
吗?
答案是肯定的。
Swift在某些情况下会省略一些0值枚举标签。(具体取决于Swift的版本)。
如果您发现某些枚举标签没有导入到Swift中,请检查Objective-C中的原始源并确认它确实具有整数值0,然后将其替换为init(rawValue: 0)
。
我找不到太多有关的信息,这就是为什么?,您只能在Xcode发行说明(> Xcode 8.0> Swift)中找到一个:
None
导入的NS_OPTIONS
选项集的成员在导入时被标记为不可用。用于[]
设置一个空的选项集,而不是一个None
成员。
目前尚不清楚该None
成员的含义,但是在表示default或none时,Swift importer的设计人员似乎更喜欢空set文字[]
作为OptionSet
类型。
因此,应修改此答案的前半部分:
您可以使用CGBitmapInfo(rawValue: 0)
replace kCGBitmapByteOrderDefault
,但最好使用空集文字:
let myBitmapInfo: CGBitmapInfo = []
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句