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.或者它不會工作 –