Мне нужно загрузить различные изображения PNG в моем приложении изнутри CALayer. Чтобы сделать это, мой код что-то вроде следующего:Как загрузить PNG как непрозрачное изображение внутри CALayer?
CALayer *myLayer = [[CALayer alloc] init];
UIImage *myImage = [UIImage imageNamed:@"nonTransparentBackground"];
[myLayer setOpaque:YES];
[myLayer setContents:(__bridge id)[myImage CGImage]];
- Когда я осматриваю приложение в симуляторе и выберите "Color смешан слоев вариант, весь слой имеет красноватый оттенок (т.е. альфа канал присутствует, поэтому он непрозрачный).
- Если я удалю изображение, значит, слой пуст, он становится зеленоватым, поэтому в CALayer нет ничего плохого.
- Если вместо .png я загружаю изображение как jpg, он также отлично работает, и слой отображается как зеленый.
- В моем файле PNG нет альфа-канала (я сохранил его с PS без прозрачности).
- Теперь я думаю, что это связано с тем, как PNG сохраняется при создании с помощью метода UIImage imagedNamed :. Возможно, в этот момент iOS преобразует все PNG, чтобы иметь альфа-канал. Это то, что я сейчас изучаю.
UPDATE 15.04.2015: Я создал тестовое приложение, которое ничего не делает, кроме загрузки PNG-файла в фоновом режиме, и это работает, что является хорошей новостью. Должно быть что-то где-то в моем приложении вызывает такое поведение. Надеюсь, это не займет слишком много времени, чтобы определить.