ОК, я нашел проблему, и это немного сложно. Во-первых, чтобы ответить Иешуа, и маска, и основание генерируются, поэтому путь здесь не имеет значения (но я буду иметь это в виду, это определенно полезно знать).
Теперь о «решении». При создании маски я использовал комбинацию вызовов CG * в фоновом контексте (CGImageCreateWithMask
, ...). Теперь кажется, что результат этого вызова дает мне CGImage
, по-видимому, без альфа-канала (CGImageGetAlphaInfo
возвращает 0), но ... как API-интерфейсы CoreGraphics на устройстве, так и в API-интерфейсе симулятора И CoreImage, но только в симуляторе применяются по-прежнему присутствует альфа-канал.
Создание CGContext с помощью kCGImageAlphaPremultipliedLast
и использование CGContextDrawImage
с kCGBlendModeSourceOut
(или чем угодно, что вам нужно для «выдавливания» изображения) сохраняет альфа-канал без изменений, и это работает как на симуляторе, так и на устройстве.
Я отправлю радар, так как симулятор или устройство неправильно.