两个视图相互叠加,在iOS之间交叉淡入淡出

时间:2013-06-24 14:16:50

标签: iphone ios uikit

我以前多次遇到这个问题,似乎无法找到一个很好的解决方案。

我需要在视图控制器的一小部分内有2个视图(可能超过2个视图),两者都显示在同一个地方。我需要在按下按钮时在这两个视图之间切换(交叉淡入淡出)。这两个视图中都有按钮,需要链接到它们正在显示的视图控制器中的IBAction(我认为排除了为每个视图设置单独视图控制器的可能性)。

是否有任何简单或优雅的解决方案,而不会使用无法看到的视图堵塞storyboard / nib文件?我很想知道不同的人如何处理这个问题。

干杯, 戴夫。

2 个答案:

答案 0 :(得分:3)

您的问题纯粹涉及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;
    }];
}

答案 1 :(得分:1)

您想要制作动画的视图可以在代码中创建,而这些视图不会“阻塞故事板”。但是你不能直观地设计那个特定的视图。我个人并不喜欢这个。

我过去做过的一件事是将不可见的默认视图设计为笔尖中的独立部分。 (将视图拖动到设计图面上,使其自由形式,然后根据需要进行设计。)您可以将它们连接到动作方法并使用它们设置出口,就像主视图中的常规子视图一样。

然后在处理视图过渡的按钮操作方法中,将隐藏视图上的框架设置为当前可见视图的框架。您可以根据需要设置动画。

这种方法允许我在视觉上进行设计,但不会使用一堆隐藏视图使主视图混乱。它的唯一成本是帧和转换代码。这可能适合你。