3

我有一个UIViewController没有状态栏,它启动第二个UIViewController有一个状态栏。状态栏隐藏后查看下推视图?

如果扩展状态栏处于活动状态,两个视图都可以正确显示,但是当我退出第二个视图并返回第一个视图时,我会在顶部看到一个20pt的黑色条,并且整个视图被压低,底部。

我试图重置帧到原点0,0在viewDidAppear但它没有效果。

为什么视图被压下来,我该如何解决? openShare前视图

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    self.view.frame = CGRectMake(0, 0, self.width, self.height); 
    self.view.backgroundColor = [UIColor redColor]; 
} 

- (void)openShare { 
    Share *share = [[Share alloc] init]; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:share]; 

    nav.modalTransitionStyle = UIModalPresentationPopover; 
    [self presentViewController:nav animated:YES completion:nil]; 
} 

顶部被称为:

enter image description here

顶视图的Share后提出,并驳回:

enter image description here

+0

您是否为基于viewcontroller的状态栏apearence配置了plist?视图框架与黑色视图无关。改变窗口框架可能工作,但我不认为它是一个好主意 –

+0

是的,我设置了' UIViewControllerBasedStatusBarAppearance' – Cbas

+0

如何更改窗口框架? '窗口'似乎并不存在于视图控制器 – Cbas

回答

0

昨天我有完全相同同样的问题在我的应用程序

我做了两件事来解决问题。

  1. 我设置了Top Space to: Top Layout Guide约束带20的恒定(与状态栏高度)在我的导航栏
    Constaint
  2. 我在有问题的控制器中添加这个([self.view layoutSubviews]

    -(void)viewDidAppear:(BOOL)animated { 
        [super viewDidAppear:animated]; 
    
        [self.view layoutSubviews]; 
    } 
    
+0

我没有导航栏。我尝试了第二个解决方案,但它没有效果 – Cbas

+0

导航栏是一个例子。使用此解决方案与任何控件 –

+0

而你必须做1. + 2.或者它不会工作 –