0

好的,我已经研究这个问题一段时间了,这远远超出了我的专业知识,因此我再次寻求帮助。

我正在尝试为 tabbarbutton 单击到另一个视图的过渡设置动画。我已经在两个 viewController (ViewWillAppear) 方法中声明了下面的代码

- (void)viewWillAppear:(BOOL)animated
{
    //TODO: Fix transition animation

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                           forView:self.view cache:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView commitAnimations];

    [super viewWillAppear:animated];  
}

右边是 FirstViewController,左边是 SecondViewController。

现在问题发生在用户第一次加载应用程序时,一旦所有内容加载完毕并且用户单击标签栏按钮转到第二个视图,它不会翻转..但是当您返回 FirstView 时,它会动画然后如果你再去第二次,这一次它会动画。有人知道为什么会这样吗?如果您提供帮助,将不胜感激!

更新:: 我正在尝试将动画添加到 viewDidLoad 中,但是已经有一个动画用于我正在加载的打开序列。

[super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //-- Start Opening Animation ------->
    CGRect vaultTopFrame = vaultTop.frame;
    vaultTopFrame.origin.y = -vaultTopFrame.size.height;

    CGRect vaultBottomFrame = vaultBottom.frame;
    vaultBottomFrame.origin.y = self.view.bounds.size.height;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.5];
    [UIView setAnimationDelay:2.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    vaultTop.frame = vaultTopFrame;
    vaultBottom.frame = vaultBottomFrame;

    [self.view bringSubviewToFront:vaultTop];   //this should place this subview above any others on the same page
    [self.view bringSubviewToFront:vaultBottom]; //this should place this subview above any others on the same page

    [UIView  commitAnimations];

我想这可能会让我搞砸了,你怎么看?

4

2 回答 2

0

应用程序加载时您没有动画。viewDidLoad在视图加载时为动画设置动画,并viewDidAppear在用户在病房后进行转换时(每次单击选项卡时)为您提供动画。

于 2011-07-22T04:03:47.190 回答
0

这可能是也可能不是问题,但您应该致电

[super viewWillAppear:animated];  

在方法的开头,在您的动画代码之前。

于 2011-07-22T04:04:01.880 回答