iOS:在弹出视图控制器时更改UINavigationItem titleView垂直位置

时间:2014-11-30 17:31:50

标签: ios uinavigationcontroller uinavigationbar uinavigationitem

我为不同的视图控制器设置了不同高度的不同titleViews。

我手动增加与UINavigationBar

一起使用的UIViewController的高度

由于高度不同,我必须使用 - (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics以便titleView居中。

在我的UINavigationController子类中,我将其委托设置为self:

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{

    CGFloat verticalAdjust;

    if(smallAdjust){
        verticalAdjust = 10;
    }else{
        verticalAdjust = 30;
    }

    [self.navigationBar setTitleVerticalPositionAdjustment:verticalAdjust forBarMetrics:UIBarMetricsDefault];

}

当我将新的视图控制器推入堆栈时,这很正常 - 定位与预期一致。但是,当我弹出一个视图控制器并且titleView发生了变化(因此必须更新verticalPosition)时,titleView不会更新,直到显示前一个视图控制器的视图。因此,当我弹出时,titleView会保持在我弹出的VC的位置,并且只有在加载视图时,它的位置才会自行调整。

我该如何解决这个问题?

0 个答案:

没有答案