2012-07-02 10 views
5

Chcę utworzyć kopię pliku UIView i nie chcę używać NSKeyedArchiver, ponieważ często tworzę kopię wielu widoków, a używanie NSKeyedArchiver było powolny.Tworzenie kopii uiview (nie wskaźnika do oryginalnego widoku)

Słyszałem o copy lub initWithZone:, ale w Google go znaleźć nie jest dobre dla UIView. Nie chcę kopii, która wskazuje na pierwotny widok, ponieważ wszelkie wprowadzone w niej zmiany również wprowadzą zmiany w skopiowanym UIView.

+0

Nie można skopiować widok. Jeśli chcesz "skopiować", musisz wykonać głęboką kopię za pomocą NSCoding (kluczowy element archiwizujący) lub musisz zaimplementować jakiś kopiowalny obiekt danych, którego używa twój widok, aby ustawić się i aktualizować, a następnie skopiować go z jednego pliku zobacz i dodaj go do innego. Ale nie ma sposobu, aby po prostu "skopiować" widok. –

+0

Czekaj, kiedy mówisz, że chcesz kopię, która wskazuje na oryginał, masz na myśli, że chcesz tego samego widoku w 2 różnych miejscach? –

+0

Chciałem tylko zapisać stan uiview w danym momencie do innego uiview, ponieważ zaimplementowałem rotację, skalowanie i ruch uiviews z dotykiem. Więc możesz mi powiedzieć, jak skopiować właściwości uiview do innych, jeśli nie można skopiować .. Thnx –

Odpowiedz

-4

Utwórz kategorię UIView, która może pomóc w kopiowaniu widoku. Coś takiego:

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

nie spowoduje to skopiowania wszystkich atrybutów żądanego widoku – Saad

0

można skopiować widok przy użyciu:

TheView *copyOfView = (TheView *) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:origionalTheView]]; 
Powiązane problemy