3

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

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];

但不是从右侧翻转,而是从顶部翻转。我的应用程序仅在横向模式下工作。

请帮忙。

4

2 回答 2

1

我不知道苹果在开发这个 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;
    }
}

如果您想朝不同的方向翻转,您可以相应地调整代码。但是,如果您想使用页面卷曲过渡,恐怕您可能完全不走运。

于 2012-06-28T20:34:37.753 回答
0

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

假设您的设备顶部位于左侧,而不是设置动画

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:YES];

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

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

于 2011-03-16T01:27:05.570 回答