2012-07-02 3 views
5

Quiero crear una copia de UIView, y no quiero usar NSKeyedArchiver porque con frecuencia estoy creando una copia de muchas vistas, y el uso de NSKeyedArchiver fue lento.Cómo crear una copia de uiview (no un puntero a la vista original)

Me enteré de copy o initWithZone:, pero en Google encontró que no es bueno para UIView. No deseo una copia que apunte a la vista original porque cualquier cambio realizado en ella también hará cambios en el UIView copiado.

+0

No es posible copiar una vista. Si quiere una "copia", debe hacer una copia profunda con NSCoding (el material del archivador con clave) o tiene que implementar algún objeto de datos copiables que su vista use para configurarse y actualizarse, luego cópielo de una sola acción ver y agregarlo a otro. Pero no hay forma de simplemente "copiar" una vista. –

+0

Espera, cuando dices que quieres una copia que apunte al original ¿te refieres a que quieres la misma vista en 2 lugares diferentes? –

+0

solo quería guardar el estado de una vista en un momento determinado a otra vista porque he implementado la rotación, la escala y el movimiento de vistas con el tacto. Así que puede por favor dime cómo copiar las propiedades de una vista a otra si no se puede copiar ... thnx –

Respuesta

-4

Crea una Categoría UIView que puede ayudar a copiar la vista. Algo como esto:

- (id) copyView { 
    UIView *a = [[UIView alloc]init]; 
    a.frame = self.frame; 
    //set all other properties of the UIView 
    return a; //return [a autorelease] if not using ARC 
} 
+0

esto no copiará todos los atributos de la vista deseada – Saad

0

Usted puede copiar una vista usando:

TheView *copyOfView = (TheView *) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:origionalTheView]]; 
Cuestiones relacionadas