2011-04-08 60 views
3

在横向中,从一个视图(这是导航控制器堆栈的一部分)转换为另一个视图为模态视图,UIModalTransitionStyleFlipHorizo​​ntal设置为modalTransitionStyle,视图在横向模式下垂直翻转。UIModalTransitionStyleFlipHorizo​​ntal在横向上垂直翻转

在动画之后,关于视图外观的其他一切都很好,但我注意到视图的框架大小没有改变,这也导致了我的代码的其他地方的问题。我想如果我解决了这个特殊的翻转而不是水平的垂直翻转问题,它会解决另一个问题。

我认为它与窗口本身没有改变方向有关,但我不确定是什么。

任何人有任何想法?

回答

2

与WWDC的苹果工程师交谈,发现UIModalTransitionStyleFlipHorizo​​ntal在横向上不起作用,它将翻转垂直方向的东西。

我提到的另一个问题是因为我没有正确地调整帧的视图。

+0

伟大的提及苹果工程师@ WWDC。我有这个确切的问题,并且你让我相信我应该转向不同的转变。谢谢! – 2013-01-15 08:24:42

0

如果您使用iOS7自定义视图控制器转换,则有一个解决方案。启动转换的ViewController应该向协议确认以下方法。

- (id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController: (UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source { 
    return (id<UIViewControllerAnimatedTransitioning>)self; 
} 

- (id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed { 
    return (id<UIViewControllerAnimatedTransitioning>)self; 
} 

- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext { 
    return 0.7f; 
} 

- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext { 
    UIView *containerView = [transitionContext containerView]; 


    UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; 
    [containerView addSubview:fromVC.view]; 

    UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; 
    [containerView addSubview:toVC.view]; 

    UIViewAnimationOptions animationOption; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) { 
     animationOption = ([toVC.presentedViewController isEqual:fromVC])?UIViewAnimationOptionTransitionFlipFromTop:UIViewAnimationOptionTransitionFlipFromBottom; 
    } 
    else { 
     animationOption = ([toVC.presentedViewController isEqual:fromVC])?UIViewAnimationOptionTransitionFlipFromLeft:UIViewAnimationOptionTransitionFlipFromRight; 
    } 

    [UIView transitionFromView:fromVC.view 
        toView:toVC.view 
        duration:[self transitionDuration:transitionContext] 
        options:animationOption 
       completion:^(BOOL finished) { 
        [transitionContext completeTransition:YES]; 
        }]; 
} 

模态的ViewController的过渡代表要显示应设置这样的: [modalViewController setTransitioningDelegate:自];例如,这个linke可以放在prepareForSegue:方法中。

就是这样。

+0

我在iOS8中尝试过,但是当它呈现时,它不会生成动画,但是当我将其解除时,它会生成动画。 – Matthew 2014-11-04 09:48:54