CALayer перезаписывает содержимое-изображение фоном

У меня есть настраиваемый UIView с настраиваемым CALayer. Слой перезаписывается - (пусто) отображение; для присвоения CGImageRef свойству содержимого слоев. В принципе, это работает должным образом (большую часть времени), но на некоторых устройствах изображение иногда становится просто белым. На самом деле я могу выбрать цвет, установив backgoundColor.

Некоторые устройства означают: из трех моих тестовых устройств выходит из строя только iphone5 с iOS7. iPhone6 ​​+ и iPad оба с iOS8 работают.

Иногда означает: в принципе, это работает и на плохих устройствах, но есть 50-50 шансов получить реальное изображение или простой фон ...

(Я жду отзывов некоторых тестеров, чтобы получить лучшую статистику)

На самом деле я надеюсь выяснить, какой метод слоя или представления (в качестве делегата) я должен перезаписать пустым, чтобы остановить это уродливое поведение.

В качестве альтернативы я попытаюсь добавить свой слой в качестве подслоя обычного слоя обзора. Но я бы хотел избежать этого, потому что в итоге у меня получилось бы 2 слоя с размером представления, которое довольно велико ...

Надеюсь, у кого-то есть подсказка для меня ... Заранее спасибо

Обновление: это не ограничивается iOS7. У меня также есть отчет с iPad под управлением iOS8.4 ...

Обновление 2: я узнал еще кое-что. Мне кажется, что это проблема не компоновки слоя, а скорее проблема CGBitmapContext.
Я создаю контекст растрового изображения и держу ссылку на него, чтобы визуализировать дополнительные части, сохраняя при этом часть старого содержимого .
После этого я вызываю CGBitmapContextCreateImage () и устанавливаю полученное изображение как содержимое слоя.
Изображение не будет содержать всего, что я отрендерил. Для тестирования я реализовал, что могу запускать обновление содержимого через сенсорное событие:

  • если я сохраню ссылку на изображение и снова установлю то же изображение для свойства содержимого, это покажет, что те же области остаются белыми (так что на самом деле слой отображает изображение правильно)
  • если я снова вызову CGBitmapContextCreate () и установлю результат как содержимое слоя, изображение будет завершено. Пока что нет никаких изменений в контексте растрового изображения. Это означает, что два последовательных вызова CGBitmapContextCreate () возвращают разные изображения?!?

    -


person moritz    schedule 11.09.2015    source источник


Ответы (1)


Я перестал разбираться в инт. Я начинаю считать это ошибкой в ​​Core-Graphics / Animation. Или оскорбление с моей стороны. Бывает только для довольно больших просмотров.

Первые попытки с CATiledLayer не очень меня радуют, но кажутся вполне выполнимым подходом ... Или, по крайней мере, указателем направления, в котором я реорганизую свой код ...

person moritz    schedule 15.09.2015