2011-04-08 67 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