我以前多次遇到过这个问题,似乎无法提出一个好的解决方案。
我需要在视图控制器的一小部分中有 2 个视图(可能超过 2 个视图),它们都显示在同一个地方。我需要点击一个按钮在这两个视图(交叉淡入淡出)之间切换。这两个视图中都有按钮,这些按钮需要链接到它们正在显示的视图控制器中的 IBAction(我认为这排除了为每个视图设置单独视图控制器的可能性)。
是否有任何简单或优雅的解决方案,而不用无法看到的视图堵塞故事板/笔尖文件?我很想知道不同的人是如何处理这个问题的。
干杯,戴夫。
您的问题纯粹涉及 UI 动画,因此不应通过添加新的视图控制器来解决。以下代码应该会有所帮助:
-(void)buttonTapped {
[UIView animateWithDuration:0.5 animations:^{
// self.view1 and self.view2 are views that need to be switching
self.view1.alpha = 0;
self.view2.alpha = 1;
}];
}
您想要动画的视图可以在代码中创建,这不会“阻塞情节提要”。但是你不能在视觉上设计那个特定的视图。我个人不喜欢那个。
我过去做过的一件事是将默认不可见的视图设计为笔尖中的独立部分。(将视图拖到设计图面上,使其自由形式,然后根据需要进行设计。)您可以将它们连接到操作方法并设置出口,就像主视图中的常规子视图一样。
然后在处理视图转换的按钮操作方法中,将隐藏视图上的框架设置为当前可见的框架。您可以根据需要制作动画。
这种方法允许我进行可视化设计,但不会用一堆隐藏视图混淆主视图。唯一的成本是帧和转换代码。这可能对你有用。