定制化我有嵌入UINavigationController
时与iOS 7/8内建但是当针对iOS的SDK 9建提出了一个错误的布局,做工精细视图控制器之间的自定义推送过渡。与NavigationController推动画在iOS 9
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
[transitionContext.containerView addSubview:toViewController.view];
...
然后继续执行动画。问题是toViewController
的内容即使在使用右上方布局指南自动布局约束时,也会显示导航栏后面的内容。
尽管如此,它在iOS 8上运行良好,如果我们强制重绘(例如,将应用程序发送到背景并将其返回,将模式置于顶部并将其解除,等等)会导致整个自动布局系统重绘自己并toViewController
的视图跳转到正确的位置(作为顶部布局指南,来自导航栏的x像素而不是来自设备屏幕顶部的x像素)。
添加
[self.view setNeedsUpdateConstraints];
[self.view layoutIfNeeded];
作品如果放在viewDidAppear:animated
,但viewDidLoad
或viewWillAppear:animated
不起作用。这不是因为用户会看到当重绘在viewDidAppear:animated
救命恩人,感谢队友 – beebcon
你刚刚为我节省了很多时间。非常感谢! –