Ответ
CALayer образует древовидную иерархию, аналогичную UIView. Каждый слой может иметь одного родителя (superlayer) и множество дочерних слоев (sublayers). Эта иерархия определяет порядок отрисовки (снизу вверх) и преобразование координат.
Базовые операции с иерархией:
let rootLayer = CALayer()
let childLayer1 = CALayer()
let childLayer2 = CALayer()
// 1. Добавление подчиненного слоя
rootLayer.addSublayer(childLayer1)
// 2. Вставка на определенную позицию (индекс 0 — самый нижний)
rootLayer.insertSublayer(childLayer2, at: 0)
// 3. Удаление слоя из иерархии
childLayer1.removeFromSuperlayer()
Важные аспекты:
- Порядок отрисовки: Слои рисуются в порядке массива
sublayers(от0кn-1). - Система координат: Положение и преобразования дочернего слоя (
position,transform) вычисляются относительно системы координат родительского слоя. - Управление z-порядком: Помимо порядка в массиве, на видимость влияет свойство
zPosition(более высокое значение — «ближе» к наблюдателю). - Маскирование: Слой может быть обрезан (
masksToBounds = true) границами родительского слоя.
Иерархия слоев — фундамент для анимаций и сложного рендеринга в Core Animation.