CALayers поддерживают иерархию, как это делают представления. Подслои рендерится перед своим суперслоем, все по иерархии. Свойство zPosition
следует использовать только для управления рендерингом родственных слоев, размещая один над другим. Даже в этом случае предпочтительно, чтобы вы размещали родственные слои в свойстве sublayers
(слои рисуются в том порядке, в котором они находятся в этом массиве, причем каждый последующий слой рисуется на том, который находится перед ним в массиве).
Довольно легко увидеть эту иерархию, потому что вы вручную добавляете подслои к слою, когда создаете их в своем коде, вплоть до базового слоя для вашего UITableViewCell (подкласс поддерживаемого слоем UIView).
Кроме того, вам не следует добавлять слои в UITableViewCell в рамках метода -drawRect:
. Это следует использовать только для рисования содержимого базового слоя UITableViewCell. Выделение и настройка CALayers в этом методе может привести к значительному замедлению при прокрутке или перерисовке. Вам нужно только настроить эти слои один раз в какой-то момент, когда инициализируется UITableViewCell, а затем просто обновить их при повторном использовании ячейки.