导航栏更改高度

Posted

技术标签:

【中文标题】导航栏更改高度【英文标题】:Navigation Bar Changes Height 【发布时间】:2015-09-05 15:20:34 【问题描述】:

当我将 UIViewController 从之前的控制器推送到屏幕时,它会为更改设置动画。但是当它完成加载时,它会调整我的导航栏的大小,并且跳跃的过渡使它看起来很糟糕。我怎样才能解决这个问题?我所做的只是在viewWillAppear 的控制器A 中隐藏导航栏,并在viewDidLoad 的控制器B 中显示它。

【问题讨论】:

【参考方案1】:

好的解决了。在控制器 B(我正在推送的视图控制器)的 viewDidLoad 中添加以下内容:

UINavigationBar *navigationBar = self.navigationController.navigationBar;

[navigationBar setBackgroundImage:[UIImage new]
                   forBarPosition:UIBarPositionAny
                       barMetrics:UIBarMetricsDefault];

[navigationBar setShadowImage:[UIImage new]];

然后在您的UIViewController 的 XIB 中对导航栏进行高度限制并将其设置为 68(从测试来看,实际行似乎在 68 和 69 之间)。光滑如丝。

编辑:如果有人有更好的想法,请添加它们。我将不得不修改这个屏幕旋转解决方案,所以它并不完美。

【讨论】:

【参考方案2】:

您可以像这样在 控制器 A 中执行所有操作:

- (void)viewWillAppear:(BOOL)animated 

    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillAppear:animated];


- (void)viewWillDisappear:(BOOL)animated 

    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillDisappear:animated];

【讨论】:

它仍然调整了导航栏的大小。动画使它看起来更好,但我仍然希望根本不调整导航栏的高度。

以上是关于导航栏更改高度的主要内容,如果未能解决你的问题,请参考以下文章

更改 iOS Xamarin 表单上的导航栏高度?

以编程方式快速更改导航栏的高度

swift 4中无法更改导航栏的高度

如何更改导航栏的高度

如何使用swift3增加导航栏的高度并更改xcode 8中状态栏的颜色?

iOS 11 - 无法更改导航栏高度