Short version:
I had a problem with the layout guide for the top layout when used in conjunction with a custom transition and UINavigationController in iOS7. In particular, the restriction between the top layout and the text is not met. Has anyone encountered this issue?
Long version:
I have a scene that uniquely identifies constraints (i.e., top, bottom, left, and right) that displays the view as follows:

But when I use this with a custom transition on the navigation controller, the top restriction in the top layout guide seems to be turned off, and it appears as if the top layout were at the top of the screen, and not at the bottom of the navigation controller:

It seems that the "layout guide" with the navigation controller is confused when using a custom transition. Other restrictions apply correctly. And if I rotate the device and rotate it again, everything will suddenly display correctly, so it does not seem that the restrictions are not defined properly. Similarly, when I turn off my custom transition, the views are displayed correctly.
Having said that _autolayoutTrace reports that the UILayoutGuide objects UILayoutGuide suffering from AMBIGUOUS LAYOUT when I run:
(lldb) po [[UIWindow keyWindow] _autolayoutTrace]
But these layout guides are always reported as ambiguous when I look at them, although I guaranteed no missing restrictions (I made the usual choice of the view controller and selecting "Add missing restrictions for the view controller", or select all the controls and do the same for them).
In terms of how accurately I am making the transition, I specified an object that matches the UIViewControllerAnimatedTransitioning in the animationControllerForOperation method:
- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController*)fromVC toViewController:(UIViewController*)toVC { if (operation == UINavigationControllerOperationPush) return [[PushAnimator alloc] init]; return nil; }
and
@implementation PushAnimator - (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext { return 0.5; } - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext { UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; [[transitionContext containerView] addSubview:toViewController.view]; CGFloat width = fromViewController.view.frame.size.width; toViewController.view.transform = CGAffineTransformMakeTranslation(width, 0); [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{ fromViewController.view.transform = CGAffineTransformMakeTranslation(-width / 2.0, 0); toViewController.view.transform = CGAffineTransformIdentity; } completion:^(BOOL finished) { fromViewController.view.transform = CGAffineTransformIdentity; [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; }]; } @end
I also did the above by setting the frame view, not transform , with the same result.
I also tried to manually verify that the restrictions were layoutIfNeeded calling layoutIfNeeded . I also tried setNeedsUpdateConstraints , setNeedsLayout etc.
On the bottom line, did anyone successfully marry a navigation controller custom transition with restrictions using the placement guide?