1

当我将我的UIViewController从我之前的控制器中移动到屏幕上时,它会对更改进行动画处理。但是当它完成加载时,它会调整我的导航栏的大小,而跳跃的转换使它看起来很糟糕。我怎样才能解决这个问题?我所做的只是隐藏控制器A中的导航栏viewWillAppear,并在控制器B中显示viewDidLoad导航栏更改高度

enter image description here

回答

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]; 
} 
+0

它仍然调整导航栏的大小。动画使它看起来更好看,但我仍然更喜欢根本没有调整导航栏高度。 – thecodingmate

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之间)。丝绸般光滑。

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