我有一个视图控制器,导航栏设置为隐藏和 将我自己的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];
上面的代码在我加载这个视图控制器时有效,但是如果我推送到任何其他视图控制器并返回到该视图控制器,那么状态栏占用空间并向下推视图。
如何解决它。我已经尝试过我所知道的所有解决方案。
答案 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并检查它是否有效吗?