2

这就是我从一个 UIView 切换到另一个 UIView 的方式:self.view = MyView; 如何将视图淡出到我的MySecondView?

4

2 回答 2

6

您可以使用 UIView 的内置过渡代码在它们之间交叉溶解。

[UIView transitionFromView:self.view toView:MySecondView duration:0.25 options:UIViewAnimationOptionTransitionCrossDissolve completion:^(BOOL finished) {
    // What to do when its finished.
}];

您还可以将常规动画选项与此类一起使用。我没有测试过这段代码,因为我不在 Xcode 前面,但我一直将它用于标签和没有默认动画的东西。

[UIView animateWithDuration:0.25 animations:^{
    [self.view setAlpha:0.0];
    self.view = mySecondView;
    [self.view setAlpha:1.0];
}];
于 2012-08-07T14:34:59.123 回答
2

请注意,执行 self.view = MyView 之类的操作来更改屏幕并不是一个好主意。当您到达几个屏幕时,您的 viewController 将充满意大利面条式代码。您应该考虑提供管理其视图的新视图控制器。您可以进行淡入淡出的一种方法如下:

  • 将当前视图淡化为黑色(带动画)
  • 在您要推送的视图控制器中,使用 viewWillAppear 也可以将视图淡化为黑色
  • 推送/呈现不带动画的视图控制器。
  • 现在使用新呈现的视图控制器的 viewDidAppear 方法来淡入视图(带有动画)。
于 2012-08-07T14:41:27.890 回答