2012-07-02 22 views
5

Tôi muốn tạo bản sao của UIView và tôi không muốn sử dụng NSKeyedArchiver vì tôi thường tạo bản sao của nhiều chế độ xem và sử dụng NSKeyedArchiver là chậm.Cách tạo bản sao của uiview (không phải là con trỏ đến uiview gốc)

Tôi đã nghe nói về copy hoặc initWithZone:, nhưng Googling thấy nó không tốt cho UIView. Tôi không muốn một bản sao chỉ vào chế độ xem gốc vì bất kỳ thay đổi nào được thực hiện cho nó cũng sẽ thực hiện các thay đổi đối với bản sao được sao chép UIView.

+0

Bạn không thể sao chép một cái nhìn. Nếu bạn muốn có một "bản sao", bạn phải thực hiện một bản sao sâu với NSCoding (các công cụ lưu trữ có khóa) hoặc bạn phải thực hiện một số đối tượng dữ liệu đồng bộ mà chế độ xem của bạn sử dụng để tự thiết lập và cập nhật, sau đó sao chép xem và thêm nó vào khác. Nhưng không có cách nào để chỉ "sao chép" một cái nhìn. –

+0

Đợi đã, khi bạn nói rằng bạn muốn một bản sao trỏ đến bản gốc, bạn có muốn xem cùng một địa điểm ở 2 địa điểm khác nhau không? –

+0

tôi chỉ muốn lưu trạng thái của một uiview tại một thời điểm cụ thể để một uiview vì tôi đã thực hiện xoay, mở rộng quy mô và chuyển động của uiviews với liên lạc. Vì vậy, bạn có thể plz cho tôi biết làm thế nào để sao chép các thuộc tính của một uiview khác nếu nó không thể được sao chép..thnx –

Trả lời

-4

Tạo danh mục UIView có thể giúp sao chép chế độ xem. Một cái gì đó như thế này:

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

điều này sẽ không sao chép tất cả các thuộc tính của chế độ xem mong muốn – Saad

0

Bạn có thể sao chép một cái nhìn sử dụng:

TheView *copyOfView = (TheView *) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:origionalTheView]]; 
Các vấn đề liên quan