флип переход переворачивает вид сверху в ландшафтном режиме - PullRequest
3 голосов
/ 10 марта 2011

Я использую этот код для флип-перехода.

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 ]

1 голос
/ 29 июня 2012

Я не знаю, что думала 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;
    }
}

Вы можете настроить код соответствующим образом, если хотите перевернуть в другом направлении.Однако, если вы хотите использовать переходы скручивания страницы, возможно, вам не повезло.

0 голосов
/ 16 марта 2011

Константы анимации определены с учетом портретного режима. Если вы определяете свое приложение только в ландшафтном режиме, вы должны подумать об этих константах анимации с наклоненной головой на 90 градусов.

Допустим, верхняя часть вашего устройства имеет название слева, чем вы бы установили анимацию с помощью

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

и оно свернется справа Это потому, что нижняя часть устройства в этом случае направлена ​​вправо.

Плохо то, что UIViewAnimationTransitionFlipFromBottom не определено. Я думаю, вы могли бы повернуть систему координат анимации на 90 градусов, но я не могу вам с этим помочь.

...