Как создать копию uiview (не указатель на оригинальный uiview)
Я хочу создать копию UIView
и я не хочу использовать NSKeyedArchiver
потому что я часто создаю копию многих видов и использую NSKeyedArchiver
был медленным
Я слышал о copy
или же initWithZone:
, но гуглил, нашел, что это не хорошо для UIView
, Мне не нужна копия, которая указывает на исходный вид, потому что любые изменения, внесенные в него, также будут вносить изменения в скопированный UIView
,
2 ответа
Вы можете скопировать вид, используя:
TheView *copyOfView = (TheView *) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:origionalTheView]];
Создайте категорию 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
}