我为不同的视图控制器设置了不同高度的不同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的位置,并且只有在加载视图时,它的位置才会自行调整。
我该如何解决这个问题?