弹出拇指视图控制器后,视图控制器正在我的导航栏下绘制

Posted

技术标签:

【中文标题】弹出拇指视图控制器后,视图控制器正在我的导航栏下绘制【英文标题】:View controller is drawing under my navigation bar after popping ttthumbsviewcontroller 【发布时间】:2010-02-18 06:02:31 【问题描述】:

我正在实施 Three20 项目中的 TTThumbsViewController,事情终于开始成形。我从当前视图控制器推送 TTThumbsViewController,只需将其推送到当前堆栈并为过渡设置动画(普通导航控制器推送)。

我的问题是,当我弹出 TThumbsViewController 视图控制器时,导航控制器卡在其视图控制器绘制在导航栏下方(现在是半透明的)的模式中。

开始

推送

流行音乐

【问题讨论】:

我通过强制导航栏为 BlackOpaque 样式来解决问题。如果设置为半透明,绘制代码大概会在导航栏下绘制点0,0。 【参考方案1】:

当您的视图重新出现时,您需要重新配置状态栏、导航栏和工具栏的原始样式。您可以通过在视图控制器中实现 viewWillAppear: 来做到这一点:

- (void)viewWillAppear:(BOOL)animated 
  [super viewWillAppear:animated];

  UINavigationController* navController = self.navigationController;
  navController.navigationBar.barStyle = UIBarStyleDefault;
  navController.navigationBar.tintColor = [UIColor redColor];
  navController.toolbar.tintColor = [UIColor redColor];

  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];

【讨论】:

顺便说一句,这也是我能够在启动初始屏幕时让three20更改状态栏样式的唯一方法(或者如果您最初是在第一个视图显示之前在初始屏幕期间隐藏状态栏)。感谢面包屑让我到达那里【参考方案2】:

看起来您从中推送的视图控制器没有从 TTViewController 继承。在视图从堆栈中弹出后,您可能还需要将“navigationBarTintColor”属性设置回原始颜色;如果您还没有设置全局样式表。

【讨论】:

以上是关于弹出拇指视图控制器后,视图控制器正在我的导航栏下绘制的主要内容,如果未能解决你的问题,请参考以下文章

使用不跟随拇指的屏幕边缘平移手势识别器的弹出视图控制器

iPhone:标签栏下的 UITableView 滚动

为啥 wkwebview 隐藏在导航栏下

标签更改后导航栏下的表格视图

iOS - 通过在左边缘平移弹出视图控制器,导航栏消失

为什么在首次启动时我的导航栏位于状态栏下