状态栏将视图向下移动

时间:2015-01-14 07:31:45

标签: ios uinavigationbar statusbar

我有一个视图控制器,导航栏设置为隐藏和 将我自己的UIView显示为导航栏并使其透明。 我还将我的视图框架Y位置设置为0.所以它从顶部开始,没有显示任何空格。

[self.navigationController.navigationBar setHidden:YES];

navBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

navBarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top-bg.png"]];

[self.view addSubview:navBarView];

上面的代码在我加载这个视图控制器时有效,但是如果我推送到任何其他视图控制器并返回到该视图控制器,那么状态栏占用空间并向下推视图。

如何解决它。我已经尝试过我所知道的所有解决方案。

This is on first load which is perfect   This is on back which is thew issue

2 个答案:

答案 0 :(得分:0)

我猜布局约束可能有问题。请尝试以下代码:

UIView* navBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

navBarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top-bg.png"]];

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(navBarView);
NSArray* horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[navBarView]-|"
                                        options:0 metrics:nil views:viewsDictionary];
NSArray* verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[navBarView(64)]-|"
                                                                         options:0 metrics:nil views:viewsDictionary];
NSArray* constraints = [horizontalConstraints arrayByAddingObjectsFromArray:verticalConstraints];
[navBarView addConstraints:constraints];

[self.view addSubview:navBarView];

答案 1 :(得分:0)

您可以尝试将您的代码添加到viewWillAppear并检查它是否有效吗?