UIView deep copy

iOS 초보 2018. 11. 14. 18:12

UIView 를 복사해서 새로운 UIView를 생성할때.


UIView* newView = [oldView copy];

이건 당연히 크래쉬 발생.


UIView* newView = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:oldView]];

이렇게 하면 복사가 되긴하는데.

oldView가 생성된후 화면의 변경사항이 newView에는 반영이 안된다.

(oldView에서 어떤 버튼을 둥글게 만들었는데, newView에는 버튼이 기본값이 네모모양 이었다)


UIView* newView = [oldView snapshotViewAfterScreenUpdates:YES];

이렇게 하니까 완전히 복사가 되었다.



* 추가

snapshotViewAfterScreenUpdates 이걸 사용하니까, 뷰 안에 있는 버튼의 이벤트가 발생안한다.

제길... 이건 진짜로 이미지로 스냅샷 만드는건가부다.

큰일이네...

반응형
Posted by 돌비
,