CALayer, который когда-то был частью экземпляра UIView, становится непригодным для использования - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь создать чисто графический интерфейс на основе CALayer (из соображений производительности и использования памяти) на основе нескольких стандартных шаблонов CALayer.

Я подумал, что можно было создать несколько шаблонов представленияв Интерфейсном Разработчике загрузите шаблон при запросе, затем возьмите его слой, добавьте его в качестве подслоя и отбросьте представление.Идея состоит в том, что проектировать графику в IB проще, чем создавать ее программно.

Вот что я обнаружил после множества проб и ошибок: если родительское представление слоя освобождается из памяти, тогда слойне в состоянии сделать себя.Только если я сохраню вид где-то (не привязанный ни к чему), слой сможет правильно отрисовать себя, несмотря на то, что находится в другой иерархии.

Первое, что приходит на ум, - это делегат CALayer.Однако просто переназначение делегата не решает проблему.Странно, но автономные слои, созданные без делегатов, всегда работают нормально, но не те, которые загружаются из файла XIB.

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

Кто-нибудь знает, что происходит, или как эта проблема может быть решена?

...