Я испытываю затруднения удалить всех подуровней слоя. Я в настоящее время делаю это вручную, но это приносит ненужную помеху. Я нашел много тем об этом в Google, но никаком ответе.
Я пытался сделать что-то вроде этого:
for(CALayer *layer in rootLayer.sublayers) { [layer removeFromSublayer]; }
но это не работало.
Кроме того, я пытался клонировать rootLayer.sublayers в отдельный NSArray, но результатом было то же.
Какие-либо идеи?
Править:
Я думал, что это работает теперь, но я был неправ. Это работает хорошее с CALayers, но это не работает с CATextLayers. Какие-либо идеи?
Самый простой способ удалить все подслои из слоя - установить свойство подслоя в nil:
rootLayer.sublayers = nil;
Следующее должно работать:
for (CALayer *layer in [[rootLayer.sublayers copy] autorelease]) {
[layer removeFromSuperlayer];
}
Как насчет использования обратного перечисления?
NSEnumerator *enumerator = [rootLayer.sublayers reverseObjectEnumerator];
for(CALayer *layer in enumerator) {
[layer removeFromSuperlayer];
}
, потому что группа в подслоях изменяется во время перечисления, если порядок нормальный. Я хотел бы знать результат вышеуказанного кода.