presentViewController:animated:completion不会Animate

时间:2013-09-05 20:19:23

标签: ios objective-c animation

这是我的第一个问题,所以请放心!

我有一个iOS应用程序,它有5个标签栏,每个标签栏都包含一个导航控制器。似乎无论我在哪里调用presentViewController:动画:完成,我从过渡中得不到动画,呈现的视图控制器只出现在屏幕上!

我的UIImagePickerController也会发生这种情况。没有呈现动画,但是当我解雇它时它会动画起来!

以下是从代码生成的标签栏按钮发送的代码示例,其操作连接到一个简单地执行此操作的方法。

UserRegistrationViewController *userRegistration = [[UserRegistrationViewController alloc] init];

userRegistration.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

[self presentViewController:userRegistration animated:YES completion:nil];

如果有人对我可以尝试的事情有任何想法,我将非常感激!

1 个答案:

答案 0 :(得分:2)

我假设您希望在标签栏按下之间的过渡期间发生动画。如果是这样,您几乎无法控制该动画,因为标签栏会为您管理过渡。看起来你正试图在标签按下之间实现交叉淡入淡出。虽然你真的无法淡出旧的视图控制器,但是当它出现时你可以轻松地让新的视图控制器淡入:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    //Set the view to transparent before it appears.
    [self.view setAlpha:0.0f];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    //Make the view fade in.  Set Opaque at the end for a performance boost.
    [UIView animateWithDuration:0.5f
                     animations:^{
                         [self.view setAlpha:1.0f];
                         [self.view setOpaque:YES];
                     }];
}

请注意,标签栏已经显示视图控制器。您不应该尝试自己呈现视图控制器。让标签栏为您管理;这就是它的用途。