在横向中,从一个视图(导航控制器堆栈的一部分)转换为另一个视图作为模态视图,并将UIModalTransitionStyleFlipHorizontal设置为modalTransitionStyle时,视图将以横向模式垂直翻转。
在动画之后,关于视图外观的其他所有内容都很好,尽管我确实注意到视图的帧大小没有改变,这也导致我的代码的其他地方出现问题。我想如果我修复了使这个特定的翻转垂直而不是水平的任何东西,它将解决另一个问题。
我认为它与窗口本身有关而不是改变方向,但我不确定是不是。
有人有什么想法吗?
答案 0 :(得分:2)
在WWDC上与Apple工程师交谈并发现UIModalTransitionStyleFlipHorizontal在横向上不起作用,它会翻转垂直方向。
我提到的另一个问题是因为我没有正确地调整框架到视图。
答案 1 :(得分: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:self]; 例如,这个linke可以放在prepareForSegue:方法中。
那就是它。