CATransformLayer, 3D-вращение — подслои исчезают под определенными углами

У меня есть CATransformLayer с несколькими CAShapeLayers в качестве дочерних элементов. CAShapeLayers находятся в разных z-позициях в трехмерном пространстве. Как только я поворачиваю всю сцену в 3D, некоторые слои CAShapeLayers исчезают под определенными углами, но этого не должно быть. Совершенно ясно, что они все равно должны быть видны на экране.

При дальнейшем вращении они снова появляются.

Что я могу сделать, чтобы убедиться, что мои слои всегда видны на экране, когда они должны?


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

Настройка 0 - это идентичность + перспектива. Настройка 1 и 2 очень близки друг к другу с точки зрения вращения, просто при одной настройке круг исчезает, а при другой нет.

https://dl.dropboxusercontent.com/u/40859730/Disappearing.zip


person Max    schedule 13.04.2014    source источник
comment
Можете ли вы показать пример, когда это происходит, а когда нет. И как выглядит ваша иерархия слоев?   -  person David Rönnqvist    schedule 13.04.2014
comment
Иерархия слоев следующая: CATransformLayer --> CALayer --> CAShapeLayer. По одному на каждом уровне. Попытка получить пример, где очень ясно, что происходит.   -  person Max    schedule 13.04.2014
comment
Я добавил небольшой демонстрационный проект. Надеюсь, это поможет ;)   -  person Max    schedule 13.04.2014


Ответы (1)


Я обнаружил, что вы должны установить свойство кадра всех подслоев CATransformLayer, чтобы они не исчезали или имели неправильный z-Ordering.

Хотя это приводит к моей следующей проблеме - при установке фрейма производительность значительно снижается: CATransformLayer - Проблемы с производительностью при установке рамки подслоев

person Max    schedule 15.04.2014