2012-07-02 92 views
5

我想創建一個UIView的副本,我不想使用NSKeyedArchiver,因爲我經常創建許多視圖的副本,並且使用NSKeyedArchiver慢。如何創建uiview的副本(不是指向原始uiview的指針)

我聽說copyinitWithZone:,但谷歌搜索它發現它不好UIView。我不需要指向原始視圖的副本,因爲對其進行的任何更改也會對複製的UIView進行更改。

+0

您不能複製的視圖。如果你想要一個「複製」,你必須使用NSCoding(鍵盤存檔器的東西)做一個深層拷貝,否則你必須實現一些你的視圖用來設置自己和更新的可複製數據對象,然後從一個庫中複製它查看並將其添加到另一個。但是沒有辦法只是「複製」一個視圖。 –

+0

等一下,當你說你想要一份指向原件的副本時,你的意思是你想在兩個不同的地方看到相同的視圖? –

+0

我只是想在特定時刻將uiview的狀態保存到另一個uiview,因爲我已經通過touch實現了uiviews的旋轉,縮放和移動。 所以,你可以告訴我如何複製一個uiview的屬性,如果它不能被複制..thnx –

回答

-4

創建一個可以幫助複製視圖的UIView類別。事情是這樣的:

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

這不會複製所需視圖的所有屬性 – Saad

0

可以使用複製視圖:

TheView *copyOfView = (TheView *) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:origionalTheView]]; 
相關問題