UIModalTransitionStyleFlipHorizontal在横向上垂直翻转
在横向模式下,从一个视图(这是导航控制器堆栈的一部分)转换到另一个模式视图,将UIModalTransitionStyleFlipHorizontal设置为modalTransitionStyle,视图在横向模式下垂直翻转。
在animation之后,关于视图外观的其他一切都很好,但我注意到视图的框架大小没有改变,这也导致了我的代码的其他地方的问题。 我想如果我解决了这个特殊的垂直翻转而不是水平的问题,它会解决另一个问题。
我认为这与窗户本身没有改变方向有关,但我不确定是否是这样。
有人有主意吗?
在WWDC与苹果工程师交谈,发现UIModalTransitionStyleFlipHorizontal在横向上不起作用,它会翻转垂直方向的东西。
我提到的另一个问题是因为我没有正确地调整框架的视图。
如果您使用iOS7自定义视图控制器转换,则有一个解决scheme。 启动转换的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:self]; 例如,这个linke可以放在prepareForSegue:方法中。
而已。