在ios 7及之前的版本中,我正在更新presentedViewController.view.superview的边界以自定义所呈现的视图控制器的大小,但似乎在ios 8中不再是这种情况。由于无法在视图控制器上设置超级视图(尝试在调试器中调用时返回nil)。
有什么建议如何更新显示的视图控制器的大小?这将用于自定义表示过渡。
万一以后有人遇到这个问题,这就是我的解决方法。
子类化UIPresentationController并返回frameOfPresentedViewInContainerView中的框架。将其提供给您为presentedViewController创建的transitioningDelegate。
或者,您可以在animateTransition:中设置presentedView的最终框架,该框架属于您为transitioningDelegate创建的动画对象。但是,这是做旧的iOS 7方法。自从Apple引入UIPresentationController以来,任何大小/框架更改都应该在那做,这是我之前提到的方法。
以下是一些与解决问题可能不直接相关的其他信息。
对于像我之前从未接触过Apple View Controller Transition API的那些人,以下是一些步骤。
创建符合UIViewControllerTransitioningDelegate的YourTransitioningDelegate。在这里,通常需要设置三项内容,PresentationController,PresentedAnimationController,DismissedAnimationController。
创建符合UIViewControllerAnimatedTransitioning的YourTransitionAnimator。在这里,需要重写两个函数,transitionDuration和animateTransition(这是所有动画发生的位置,添加/删除presentationView并对其进行动画处理。让您在transitionContext上调用completeTransition结束动画)。
子类UIPresentationController。根据每个人的需求,您可以在这里做很多事情。我只是添加了dimmingView并更改了presentedViewController的框架。
最后,在呈现视图控制器之前先将其连接起来,该视图控制器将modalPresentationStyle更改为自定义并设置过渡委托。
我发现真正有用的东西包括两个2014年WWDC视频(“视图控制器的改进”和“外观在演示控制器的内部”)和Apple的示例项目(LookInside-photoEditingApp)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句