Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 制作uiview的精确副本,除非用于制作uiview的精确副本实例,否则不要使用uiview本身_Ios_Objective C_Iphone_Uiview - Fatal编程技术网

Ios 制作uiview的精确副本,除非用于制作uiview的精确副本实例,否则不要使用uiview本身

Ios 制作uiview的精确副本,除非用于制作uiview的精确副本实例,否则不要使用uiview本身,ios,objective-c,iphone,uiview,Ios,Objective C,Iphone,Uiview,我在场景情节串连板中有一个视图,在视图层次结构中布局,就像firstResponder和exit对象一样,就像一个对象和这个视图一样,让我们称之为补充视图,通过IBOutlet连接到多个视图 它连接到的视图和补充视图是我的自定义类。将其作为IBOutlet的视图设计为通过setter接收此视图,然后制作副本并添加到self作为子视图和某些属性 因此,supplementaryView有点像是完全设计好的supplementaryView实例,除了复制,它永远不会用于任何事情。另外,这个补充视图是

我在场景情节串连板中有一个视图,在视图层次结构中布局,就像firstResponder和exit对象一样,就像一个对象和这个视图一样,让我们称之为补充视图,通过IBOutlet连接到多个视图

它连接到的视图和补充视图是我的自定义类。将其作为IBOutlet的视图设计为通过setter接收此视图,然后制作副本并添加到self作为子视图和某些属性

因此,supplementaryView有点像是完全设计好的supplementaryView实例,除了复制,它永远不会用于任何事情。另外,这个补充视图是一个自定义类,它重写了initWithFrame和initWithCoder,没有xib,完全由带有NSLayoutConstraints的代码构造

在运行时复制此补充视图的最佳选项是什么

我是否应该实现NSCopying并复制iInspectable和其他自定义属性以及UIView的属性

或者在运行时使用类\ copyPropertyList遍历类的属性更好吗

或者有更好的选择吗?

您不能在UIView上实现NSCopying您会遇到一个异常,视图不是要复制的,但是有一个技巧可以实现这一点,您可以使用NSKeyedArchiver归档UIView对象,然后取消归档,实质上是复制视图。比如:

id viewCopy = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:viewToCopy]];

tl;博士请用较少的文字进行简要说明,并设置问题的格式。您能告诉我一点这种存档和取消存档将如何改变UIView吗?@IgorMuzyka它不会改变UIView,但它将存档、序列化、对象化和反序列化,本质上是给您一个视图的副本。