关于objective C:iphone, ipad Duplicate UIView – 克隆视图

iphone, ipad Duplicate UIView - Cloned View

如何复制 UIView。要求是视图中应该有两个视图,例如视图 A 和视图 B。更改一个视图也应该更改另一个视图。

例如,考虑我在视图 A 中添加了一个 mpmediaplayer,这意味着视图 B 应该显示视图 A 中存在的相同视频,如果我在视图 A 中移动任何内容,则意味着转发视频、音量控制等。第二个视图应该显示同样的事情。


没有简单的方法可以克隆一个视图,然后通过一行代码更新两个视图。因为它们底层的 CALayers 是不同的。但是对于复制 UIView,您可以使用以下新方法:
使用 UIView 的方法:

1
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

这是绘制视图的最快方法。在 iOS 7 中可用。


UIViews 不容易复制,除非手动复制 - 即在 loadView 中手动创建视图并实例化两个副本。链接行为将取决于您。有些人可能会建议序列化 UIView 然后反序列化副本,但子视图不太可能实现 NSCoder(媒体播放器和 UIImages 肯定不会),这通常是一个非首发。


这实际上很容易做到。每个视图应该由一个控制器控制。然后,当在一个视图上完成操作时,控制器将简单地更新数据模型,而另一个视图将自动更新。这实际上就是模型视图控制设计的强大之处。现在应该理解这意味着两个视图实际上将共享数据。它们的本地状态将是分开的,但这些状态将由控制器与数据模型保持同步。数据模型将统一,因此视图应保持同步。

有关 MVC(模型视图控件)的更多信息,请参阅本文
http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html