неразрешенный идентификатор 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 был ошибочным. Значение
kCGImageAlphaNone
enum не было подходящим типом для передачи, но Objective-C менее типобезопасен (перечисление есть перечисление), поэтому он работал. Исходное значениеkCGImageAlphaNone
равно0
, поэтому передачаCGBitmapInfo.allZeros
илиCGBitmapInfo.ByteOrderDefault
(оба из которых имеют исходные значения0
) должна дать вам одинаковые результаты.