翻转过渡在横向模式下从顶部翻转视图

时间:2011-03-10 16:45:22

标签: iphone uiviewanimationtransition

我正在使用此代码进行翻转过渡。

MyViewController *viewController = [[MyViewController alloc] init];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:YES];
[self.navigationController pushViewController:viewController animated:NO];
[UIView commitAnimations];
[viewController release];

但不是从右边掠过,而是从顶部翻转。我的应用程序仅适用于横向模式。

请帮忙。

2 个答案:

答案 0 :(得分:1)

我不知道Apple在开发此API时的想法。这是我使用的解决方法:

// Assume this code is in a view controller subclass
- (UIViewAnimationOptions)viewAnimationOptionTransitionFlipFromRight
{
    switch (self.interfaceOrientation) {

        case UIInterfaceOrientationPortrait:
            return UIViewAnimationOptionTransitionFlipFromRight;

        case UIInterfaceOrientationLandscapeLeft:
            return UIViewAnimationOptionTransitionFlipFromBottom;

        case UIInterfaceOrientationLandscapeRight:
            return UIViewAnimationOptionTransitionFlipFromTop;

        case UIInterfaceOrientationPortraitUpsideDown:
            return UIViewAnimationOptionTransitionFlipFromLeft;
    }
}

如果要向不同方向翻转,可以相应地调整代码。但是,如果你想使用页面卷曲过渡,我恐怕你可能完全没有运气了。

答案 1 :(得分:0)

动画常量已定义为纵向模式。如果仅将应用程序定义为横向模式,则必须考虑这些动画常量,并将头部倾斜90度。

假设您的设备顶部标题为左侧,而不是使用

设置动画
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:YES];

它会从右边卷曲。这是因为在这种情况下,设备的底部朝向右侧。

不好的是UIViewAnimationTransitionFlipFromBottom未定义。我想你可以将动画的坐标系旋转90度,但我无法帮助你。