UINavigationController 自定义模态过渡,导航栏太小

Posted

技术标签:

【中文标题】UINavigationController 自定义模态过渡,导航栏太小【英文标题】:UINavigationController custom modal transition, navigation bar too small 【发布时间】:2014-12-16 22:50:27 【问题描述】:

我正在使用自定义转换以模态方式显示位于 UINavigationController 内的 UIViewController。我正在使用从较小的帧开始并以 UINavigationController 全屏结束的缩放过渡。

    toView.transform = CGAffineTransformMakeScale(kInitialScale, kInitialScale);
    [containerView addSubview:toView];

    [UIView animateWithDuration:duration animations: ^
        toView.transform = CGAffineTransformMakeScale(1.0, 1.0);
     completion: ^(BOOL finished) 
        [transitionContext completeTransition:![transitionContext transitionWasCancelled]];
    ];

我的问题是 UINavigationController 是使用导航栏创建的,该导航栏不考虑状态栏(小于应有的尺寸),并且仅在达到其全屏尺寸时才适应(从 44 像素到 64 像素)。导航标题在动画结束时偏移。

知道如何避免标题的最终偏移并从一开始就创建具有良好导航栏大小的导航控制器吗?

【问题讨论】:

【参考方案1】:

在转换之前将 toView 添加到 containerView 就可以了。

【讨论】:

为什么这样可以解决问题?

以上是关于UINavigationController 自定义模态过渡,导航栏太小的主要内容,如果未能解决你的问题,请参考以下文章

关闭 UINavigationController 并呈现另一个 UINavigationController

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr