如何复制UIView。要求在一个视图内有两个视图,例如View A和View B。更改一个视图也应更改另一个视图。
例如,如果我在View A中添加了mpmediaplayer,则View B应显示与View A中相同的视频,如果我在View A中移动任何内容,即向前播放视频,音量控制等,则第二个视图应显示相同的内容。
如何复制UIView。要求在一个视图内有两个视图,例如View A和View B。更改一个视图也应更改另一个视图。
例如,如果我在View A中添加了mpmediaplayer,则View B应显示与View A中相同的视频,如果我在View A中移动任何内容,即向前播放视频,音量控制等,则第二个视图应显示相同的内容。
要克隆一个视图并用一行代码更新两个视图并不容易,因为它们的基础CALayer是不同的。但是,如果要复制一个UIView,可以使用以下新方法:
使用UIView的方法:
- (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