使用UINavigationController进行iOS 7自定义当前转换

前端之家收集整理的这篇文章主要介绍了使用UINavigationController进行iOS 7自定义当前转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用iOS 7自定义转换来呈现UINavigationController.
但有一个问题.虽然它的动画,导航栏的大小只有44个点.完成动画后,导航控制器发现有状态栏,因此状态栏增加了20个点.

我的问题是,是否有可能在其动画时将导航栏设置为64磅,因此在完成动画时它不会再改变.

请在这里查看更多细节Custom View Transitions

这是我的自定义动画代码

@H_404_9@- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{ UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; CGRect finalFrame = [transitionContext finalFrameForViewController:toViewController]; UIView *containerView = [transitionContext containerView]; CGRect screenBounds = [[UIScreen mainScreen] bounds]; toViewController.view.frame = CGRectOffset(finalFrame,screenBounds.size.height); [containerView addSubview:toViewController.view]; NSTimeInterval duration = [self transitionDuration:transitionContext]; [UIView animateWithDuration:duration delay:0.0 usingSpringWithDamping:0.6 initialSpringVelocity:0.0 options:UIViewAnimationOptionCurveLinear animations:^{ toViewController.view.frame = finalFrame; } completion:^(BOOL finished) { [transitionContext completeTransition:YES]; }]; }

更新:有人解决了这个问题.但非常hacky.
将toViewController.view添加到containerView后添加代码.

@H_404_9@if ([toViewController isKindOfClass:[UINavigationController class]]) { UINavigationController* navigationController = (UINavigationController*) toViewController; UINavigationBar* bar = navigationController.navigationBar; CGRect frame = bar.frame; bar.frame = CGRectMake(frame.origin.x,frame.origin.y + 20.0f,frame.size.width,frame.size.height); }

有更好的方法吗?

解决方法

我有同样的问题,并解决了在设置此框架之前将t​​oViewController添加到容器.

反转如下的行:

@H_404_9@[containerView addSubview:toViewController.view]; toViewController.view.frame = CGRectOffset(finalFrame,screenBounds.size.height);

猜你在找的iOS相关文章