iOS 9:推送/stream行视图控制器由edgesForExtendedLayout中断
在iOS 9上进行debugging时,我发现了一个奇怪的问题。在View Controller的viewDidLoad
我有这样一段代码:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) { self.edgesForExtendedLayout = UIRectEdgeNone; }
当我推动或popup一个新的视图控制器时,我注意到一个奇怪的animation。 过渡并不顺利,好像它正在显示视图控制器的“堆栈”(您可以注意到两幅图像的顶部,甚至是底部)。
我在iOS 7或iOS8上没有问题,这是新发布的iOS 9的错误还是我错过了一些东西?
还值得一提的是,我正在使用自定义animation进行推/视图控制器转换。
这里是一个重写的UINavigationController
方法的例子
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { UIView *theWindow = self.view; [[theWindow layer] removeAllAnimations]; if (animated) { CATransition *animation = [CATransition animation]; [animation setDuration:0.25]; [animation setType:kCATransitionFade]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]]; [[theWindow layer] addAnimation:animation forKey:@""]; } [super pushViewController:viewController animated:NO]; }
编辑 :
我一直在debugging这个问题几个小时了。 我已经重新实现了iOS 7中引入的视图控制器转换API( navigationController:animationControllerForOperation:operation fromViewController:toViewController
)的自定义animation,但问题依然存在。
如果过渡animationalpha
属性,问题发生。
你有一个想法如何克服这个问题?
谢谢。
您需要为toViewController设置最终框架。 transitionContext.finalFrame(for:)
可以帮助您确定它。 就像是:
toViewController.view.frame = transitionContext.finalFrame(for: toViewController)