iOS hidesBarsOnSwipe状态栏背景颜色

时间:2015-03-28 16:17:48

标签: ios objective-c uinavigationcontroller statusbar

当我使用hidesBarsOnSwipe属性滑动并隐藏导航栏时,状态栏具有清晰的背景。如何将状态栏的背景设置为与导航栏相同的颜色?以下是一些显示我的问题的图片,这些图片都包含在UITableViewController

enter image description here

独立

enter image description here

单独的图片,看起来像一个大的。 enter image description here

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,并且能够解决它。我是iOS开发人员的新手,我不认为这个解决方案是万无一失的。我无法在其他地方找到任何好的答案,所以这就是我如何克服它:

  1. 我使用嵌套的UITableView从UITableViewController转换为UIViewController。注意,仔细检查子表视图的委托是否设置为UIViewController。
  2. 我添加了一个高度为20像素的视图和一个你要设置为"背景"的背景​​颜色。到状态栏。在该视图上设置约束,如下所示: bar background constraints

  3. 在表格视图中,将约束设置为基本全屏。这里有一个重要的注意事项,最重要的约束是"顶部布局指南。顶部"而不是"顶部布局指南.Bottom"。默认情况下,我认为这种约束与底层有关。双击约束可以将其调整到顶部。没有这个,任何表格标题单元格都不适合我enter image description here

  4. 希望有所帮助。

答案 1 :(得分:0)

添加到George Huber的答案。我通过添加20pt高度的UIView作为navigationController的view属性的子视图 - 在viewDidLoad方法中以编程方式解决了这个问题。

- (void)viewDidLoad
{
  [super viewDidLoad];

  UIView *statusBarBG = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 20)];
  statusBarBG.backgroundColor = [UIColor navBar];
  [self.navigationController.view addSubview:statusBarBG];

  // REST OF CODE
}