2015-04-13 4 views
0

Мне нужно загрузить различные изображения 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-файла в фоновом режиме, и это работает, что является хорошей новостью. Должно быть что-то где-то в моем приложении вызывает такое поведение. Надеюсь, это не займет слишком много времени, чтобы определить.

ответ

1

Я отправляю здесь, если у кого-то проблема в будущем, но я в этом сомневаюсь. Оказывается, проблема не связана с моим фактическим кодом, а с целью развертывания. Моя текущая цель - 7.1, но, изменив ее на 8.0, она работает так, как ожидалось. Я не знаю, что это связано с Xcode/Simulator или iOS, поэтому я, вероятно, буду придерживаться iOS 7 до следующего обновления.

 Смежные вопросы

  • Нет связанных вопросов^_^