ios - 自定义 View Controller 展示导致导航栏弹跳

标签 ios uinavigationcontroller uinavigationbar

我正在使用来自我的 Root View Controller 的转换委托(delegate)模态呈现一个 View Controller 。

UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
UIViewController *rootVC = [window rootViewController];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:authVC];
navController.modalPresentationStyle = UIModalPresentationCustom;
navController.navigationBar.translucent = NO;
navController.transitioningDelegate = self;
[rootVC presentViewController:navController animated:YES completion:nil];

我的过渡委托(delegate)添加如下 View ,其中 authorizationVC是截图中的登录 View 。
UIView *containerView = [transitionContext containerView];
[containerView addSubview:blurredView];
[containerView insertSubview:_authorizationVC.view aboveSubview:blurredView];

_authorizationVC.view.frame = CGRectMake(10, 30, 300, 450);

起初, View 动画,导航栏是全高的,我认为是 64 像素(导航栏为 44,状态栏为 20)。

Full height nav bar

一旦我的动画完成,导航栏就会缩小到 44 像素。这种转变令人不安。我的 View Controller 中的内容不受影响。

Nav bar with correct height (44 pixels)

如何避免这个抖动的导航栏?第二张图片是我想要实现的。

最佳答案

在将 View 添加到其父 View 之前设置 View 的所有属性。

UIView *containerView = [transitionContext containerView];
_authorizationVC.view.frame = CGRectMake(10, 30, 300, 450); /// Change the frame FIRST!

[containerView addSubview:blurredView];
[containerView insertSubview:_authorizationVC.view aboveSubview:blurredView];

瞧!导航栏按预期工作。

关于ios - 自定义 View Controller 展示导致导航栏弹跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353159/

相关文章:

ios - 推送通知在临时配置文件下不起作用 - 尝试了(几乎)一切

ios - 推送新的 View Controller 时,自定义导航栏 subview 不会隐藏

ios - 为什么在使用 titleEdgeInsets 时我的 UIButton 的标题在中间被截断?

ios - 核心数据中的触发器

ios - 扩展中的声明还不能覆盖

uitableview - UIPopoverController 的大小调整行为在 iOS 7.0 和 iOS 7.1 之间有所不同

ios - 无法让状态恢复与程序化导航 Controller 一起使用

ios - 将数据从 VC1 传递到 VC4

ios - 如何编辑 UINavigationBar 中左、右 UIBarButtonItem 的空白区域 [iOS 7]

ios - 导航栏中的自定义文本