0

我在我的项目上创建了在 2 个 UIWebView 之间切换的动画。当我在 iOS 3.2 上开发时,动画一切都很好。但是当我迁移到 iOS 4.2 时,突然一切都出错了:

    //LeftView Animation

    [UIView beginAnimations:@"leftPortrait" context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:1.0f];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:leftView cache:YES];
    [leftWebView setFrame:CGRectMake(0, 0, 384, 916)];
    [UIView commitAnimations];

    //RightView Animation
    [UIView beginAnimations:@"rightPortrait" context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:1.0f]; 
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:rightView cache:YES];
    [rightWebView setFrame:CGRectMake(0, 0, 384, 916)];
    [UIView commitAnimations];

谢谢!

4

1 回答 1

1

尝试使用基于块的动画。

它们更干净、更流畅,也是当前 Apple 做事的方式。从 [UIView beginAnimations:context:] 切换到基于块的动画最近也修复了我的代码中的动画问题。

在您的情况下,一个简单的基于块的动画版本将是[UIView animateWithDuration:1.0f animations:^{[leftWebView setFrame:CGRectMake(0, 0, 384, 916)];}. 您可能希望-[UIView animateWithDuration:delay:options:animations:animations:completion:]用于设置其他选项和动画完成时应执行的代码。

于 2010-12-19T17:30:04.273 回答