调整通话状态栏的大小?

Ste*_*her 23 iphone statusbar uiview

如何根据笔尖的通话中状态栏调整视图大小?

我认为它只是设置调整大小属性,但它们没有为根UIView启用.

(我认为我的主要问题是我不知道这是什么调用;除了讨论模拟器菜单命令之外,我找不到任何文档中的调用状态栏的引用.)

San*_*gam 24

只要状态栏发生更改,iOS就会调用viewController的viewWillLayoutSubviews方法.您可以覆盖它并根据新边界调整子视图.

- (void)viewWillLayoutSubviews {
    // Your adjustments accd to 
    // viewController.bounds

    [super viewWillLayoutSubviews];
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*ter 16

您正在寻找 - [UIApplication statusBarFrame],并且在您的UIApplicationDelegate中,您应该实现此委托方法以通知状态栏的帧何时更改:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame  
Run Code Online (Sandbox Code Playgroud)

  • 当状态栏因结束呼叫而改变高度时,不会调用此方法.据我所知,只有在旋转视图时才会调用它. (4认同)

Wad*_*ade 7

如果未设置根视图控制器,则视图可能无法自动调整状态栏大小.我最初在我的应用程序委托中有这个,我的应用程序在所有方面都正常工作,除了它在电话呼叫期间不能正确调整大小.

[self.window addSubview:rootController.view];
Run Code Online (Sandbox Code Playgroud)

我将上面的代码更改为此内容,现在我的应用会在通话期间自动调整大小.

[self.window setRootViewController:rootController];
Run Code Online (Sandbox Code Playgroud)

在日志中查看此内容并调查原因后,我发现了此修复程序.

Application windows are expected to have a root view controller at the end of application launch
Run Code Online (Sandbox Code Playgroud)


meg*_*gha 7

当我的应用程序在后台运行时,这对我很有用,我按下命令+ T.在我的场景中,根控制器是我的标签栏控制器,我在每个标签内重新调整我的导航控制器.

- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame{
[UIView animateWithDuration:0.35 animations:^{
    CGRect windowFrame = ((UINavigationController *)((UITabBarController *)self.window.rootViewController).viewControllers[0]).view.frame;
    if (newStatusBarFrame.size.height > 20) {
        windowFrame.origin.y = newStatusBarFrame.size.height - 20 ;// old status bar frame is 20
    }
    else{
        windowFrame.origin.y = 0.0;
    }
    ((UINavigationController *)((UITabBarController *)self.window.rootViewController).viewControllers[0]).view.frame = windowFrame;
}];
Run Code Online (Sandbox Code Playgroud)

}


Aar*_*rst 6

当你说"没有为根UIView启用调整大小属性"时,你是什么意思?

通话状态栏没有任何特殊的特殊标识,我认为它周围没有任何API或通知.相反,您的视图应该只是设置为正确自动调整大小.

尝试在Xcode中创建一个新的基于导航的应用程序,并在RootViewController.xib中研究表视图上的自动调整大小设置.希望您会看到Apple的设置与您在项目中设置的内容之间的差异.