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

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

【问题讨论】:

    标签: ios uiviewcontroller uinavigationcontroller uinavigationbar


    【解决方案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];
      }
      

      【讨论】:

      • 它仍然调整了导航栏的大小。动画使它看起来更好,但我仍然希望根本不调整导航栏的高度。
      猜你喜欢
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 2015-11-15
      • 2013-11-22
      相关资源
      最近更新 更多