2012-07-02 1 views
5

UIView 복사본을 만들고 싶습니다. NSKeyedArchiver을 사용하고 싶습니다. 많은 뷰의 사본을 자주 만들고 사용하기 때문에 NSKeyedArchiver을 사용했습니다. 느린.uiview의 복사본을 만드는 방법

나는 copy 또는 initWithZone:에 대해 들었지만, Google 검색은 UIView에 적합하지 않다고 판별했습니다. 원래의 뷰를 가리키는 복사본은 변경된 내용이 복사 된 UIView으로 변경되기 때문에 원본 뷰를 가리키는 복사본은 필요 없습니다.

+0

당신은보기를 복사 할 수 없습니다. "복사"를 원할 경우 NSCoding (키 작성된 아카이버 항목)을 사용하여 전체 사본을 작성하거나보기가 자체를 설정하고 업데이트하기 위해 사용하는 복사 가능한 데이터 객체를 구현해야하며 그런 다음 하나의 재고 중 사본을 복사해야합니다 보고 다른 사람에게 추가하십시오. 그러나보기를 "복사"할 수있는 방법은 없습니다. –

+0

잠깐, 원본을 가리키는 사본이 필요하다고 말하면 2 개 장소에서 동일한보기를 원한다는 의미입니까? –

+0

난 그냥 uiview의 상태를 다른 uiview에 저장하고 싶었는데, 왜냐하면 나는 회전, 스케일링 및 터치로 uiviews의 움직임을 구현했기 때문입니다. 그래서 plz 당신이 복사 할 수없는 경우 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]];