Swift OpenGL неразрешенный идентификатор kCGImageAlphaPremultipliedLast

Я получаю неразрешенную ошибку идентификатора для 'kCGImageAlphaPremultipliedLast'. Свифт не может его найти. Это доступно в Swift?

var gc = CGBitmapContextCreate(&pixelData, width: width, height: height, bitsPerComponent: 8, bytesPerRow: width*4, imageCS, bitmapInfo: kCGImageAlphaPremultipliedLast);

2 ответа

Решение

Последний параметр CGBitmapContextCreate() определяется как структура

struct CGBitmapInfo : RawOptionSetType {
    init(_ rawValue: UInt32)
    init(rawValue: UInt32)

    static var AlphaInfoMask: CGBitmapInfo { get }
    static var FloatComponents: CGBitmapInfo { get }
    // ...
}

где возможные биты "альфа-информации" определяются отдельно как перечисление:

enum CGImageAlphaInfo : UInt32 {
    case None /* For example, RGB. */
    case PremultipliedLast /* For example, premultiplied RGBA */
    case PremultipliedFirst /* For example, premultiplied ARGB */
    // ...
}

Поэтому вы должны преобразовать перечисление в его основную UInt32 значение, а затем создать CGBitmapInfo от него:

let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue)
let gc = CGBitmapContextCreate(..., bitmapInfo)

Обновление для Swift 2: The CGBitmapInfo определение изменено на

public struct CGBitmapInfo : OptionSetType

и это может быть инициализировано с

let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue)

Документация Apple предлагает CGImageAlphaInfo.PremultipliedLast,

https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGImage/index.html

Другие вопросы по тегам