Aquí está mi configuración: tengo una CALAyer a la que quiero agregar subcapas. Creo estas subcapas estableciendo upa UILabel y luego agregando la capa de UILables a mi capa principal. Por supuesto, esto deja el pesado objeto UILabel flotando en el fondo. ¿Es posible obtener la capa con todo su contenido desde una UIView y deshacerse de la misma UIView? ya he intentado esto:¿Es posible copiar CALayer de UIView?
UILabel* label;
[...]
[mainLayer addSublayer:[label.layer copy]];
[label release];
Pero cada vez suelto el UIView, el contenido de la capa también se elimina. ¿Es esto posible o la capa de UIView siempre necesita la propia UIView para mostrar su contenido? Pensé en la capa como un tipo de lienzo, al que pinta UIView. Supongo que podría estar equivocado con esta suposición :)
Tal vez porque el propósito de una capa es hacer que su UIView asociada y sus subcapas. Si UIView desaparece porque lo liberaste, ¿por qué necesitarías usar una capa que originalmente estaba vinculada a esa UIView? Si realmente necesita una capa, me parece lógico que también necesite su UIView.Es probable que Haentz pruebe el enfoque que sugirió (y no estoy seguro si funcionará), pero no lo he visto antes en el código de Core Animation. Además, si Apple pensó en hacer esto posible, habría hecho que CALayer cumpliera con NSCopying. Por favor, avíseme si este enfoque funciona o no. –
La única razón por la que puedo ver para copiar un CALayer es si necesitaba mostrar múltiples capas de la misma capa en la pantalla. Creo que normalmente solo crearás las capas múltiples de la misma forma que creaste la primera. Aunque, no veo por qué harías una copia si tu intención era destruir la primera tampoco. Mi pensamiento era que realmente no necesitaba una "copia" tanto como necesitaba una capa con las mismas propiedades que el original. Tienes razón, ya que probablemente no sea la solución aceptada para el problema, pero es interesante ver cómo funciona. –