导航栏更改高度

时间:2015-09-05 15:20:35

标签: ios uiviewcontroller uinavigationcontroller uinavigationbar

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

enter image description here

2 个答案:

答案 0 :(得分:1)

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

UINavigationBar *navigationBar = self.navigationController.navigationBar;

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

[navigationBar setShadowImage:[UIImage new]];

然后在UIViewController的XIB中,在导航栏上设置一个高度约束并将其设置为68(从测试实际线条似乎落在68到69之间)。光滑如丝。

编辑:如果有人有任何更好的想法,请添加它们。我必须修改此解决方案以进行屏幕旋转,因此它并不完美。

答案 1 :(得分:0)

您可以在控制器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];
}