2012-07-02 9 views
5

Voglio creare una copia di UIView, e non voglio usare NSKeyedArchiver perché sto creando spesso una copia di molte viste, e usando NSKeyedArchiver era lento.Come creare una copia di uiview (non un puntatore a uiview originale)

Ho sentito parlare di copy o initWithZone:, ma su Google ha trovato che non è buono per UIView. Non voglio una copia che rimandi alla vista originale perché qualsiasi modifica apportata ad essa apporterà anche modifiche alla copia UIView copiata.

+0

Non è possibile copiare la vista. Se vuoi una "copia" devi fare una copia approfondita con NSCoding (la roba con archiviatore con chiave) o devi implementare alcuni oggetti dati copiabili che la tua vista usa per impostarsi e aggiornarli, quindi copiarli da una azione guarda e aggiungilo ad un altro. Ma non c'è modo di "copiare" una vista. –

+0

Aspetta, quando dici che vuoi una copia che punta all'originale intendi che vuoi la stessa vista in 2 luoghi diversi? –

+0

volevo semplicemente salvare lo stato di uniview in un particolare momento su un altro utente perché ho implementato la rotazione, il ridimensionamento e il movimento delle visualizzazioni con il tocco. Quindi puoi dirmi come copiare le proprietà di uniview su altro se non può essere copiato..thnx –

risposta

-4

Creare una categoria UIView che può aiutare a copiare la vista. Qualcosa di simile a questo:

- (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

questo non copierà tutti gli attributi della vista desiderata – Saad

0

È possibile copiare una vista utilizzando:

TheView *copyOfView = (TheView *) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:origionalTheView]]; 
Problemi correlati