Ecco il mio setup: ho un CALAyer a cui voglio aggiungere i sottolivelli. Creo questi sottolivelli impostando upa UILabel e quindi aggiungendo il livello UILables al mio livello principale. Ovviamente questo lascia il pesante oggetto UILabel che si aggira sullo sfondo. È possibile ottenere il livello con tutto il suo contenuto da un UIView e sbarazzarsi dello stesso UIView? già provato questo:È possibile copiare CALayer da UIView?
UILabel* label;
[...]
[mainLayer addSublayer:[label.layer copy]];
[label release];
Ma quando rilascio l'UIView, il contenuto del livello viene anche rimosso. È ancora possibile o il layer di UIView ha sempre bisogno dello stesso UIView per mostrare il suo contenuto? Ho pensato allo strato come una sorta di tela, a cui dipinge l'UIView. Credo che potrei sbagliarmi con questa ipotesi :)
Forse perché lo scopo di uno strato è quello di rendere la sua UIView associata ed i suoi sottolivelli. Se l'UIView scompare perché lo rilasci, perché dovresti utilizzare un livello originariamente legato a tale UIView? Se hai davvero bisogno di un livello mi sembra logico che tu abbia bisogno anche del suo UIView.Haentz potrebbe certamente provare l'approccio suggerito (e non sono sicuro che funzionerà), ma non l'ho mai visto prima nel codice dell'anima core. Inoltre, se Apple avesse pensato di renderlo possibile, avrebbe reso CALayer compatibile con NSCopying. Per favore fatemi sapere se questo approccio funziona o no. –
L'unica ragione che posso vedere per copiare un CALayer è se avesse bisogno di visualizzare multipli dello stesso livello sullo schermo. Penso che di solito si andrebbe a creare più livelli nello stesso modo in cui è stato creato il primo. Anche se, non vedo perché ne faresti una copia se intendessi distruggere il primo. Pensavo che non avesse davvero bisogno di una "copia" tanto quanto aveva bisogno di un livello con le stesse proprietà dell'originale. Hai ragione perché probabilmente non è la soluzione accettata al problema, ma è interessante vedere come funziona. –