неразрешенный идентификатор kCGImageAlphaNone в swift
Я пытаюсь преобразовать изображения / текстуры (для SpriteKit) в оттенки серого с помощью CoreImage в Swift:
Я нашел такой ответ: https://stackoverflow.com/a/17218546/836501 который я пытаюсь преобразовать в swift для iOS7 / 8
Но kCGImageAlphaNone не существует. Вместо этого я могу использовать CGImageAlphaInfo.None , но функция CGBitmapContextCreate() не любит его в качестве последнего параметра. Я вынужден использовать перечисление CGBitmapInfo, но, похоже, внутри нет эквивалента kCGImageAlphaNone.
Это полная строка с неправильным параметр (последний):
var context = CGBitmapContextCreate(nil, UInt(width), UInt(height), 8, 0, colorSpace, kCGImageAlphaNone)
Мне просто нужен способ преобразовать UIImage в оттенки серого в Swift.2 ответа:
Вы должны создать
struct CGBitmapInfoиз значенияCGImageAlphaInfo.None:let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.None.rawValue) var context = CGBitmapContextCreate(nil, UInt(width), UInt(height), 8, 0, colorSpace, bitmapInfo)
Я считаю, что исходный код Objective-C был ошибочным. Значение
kCGImageAlphaNoneenum не было подходящим типом для передачи, но Objective-C менее типобезопасен (перечисление есть перечисление), поэтому он работал. Исходное значениеkCGImageAlphaNoneравно0, поэтому передачаCGBitmapInfo.allZerosилиCGBitmapInfo.ByteOrderDefault(оба из которых имеют исходные значения0) должна дать вам одинаковые результаты.