如何知道StatusBar大小何时更改(iPhone)

时间:2010-03-29 12:37:27

标签: iphone uiviewcontroller uitabbarcontroller statusbar

我有 UITabBarController,带有2个标签。当StatusBar大小改变时,一个调整大小很好(仿真器“切换呼叫状态栏”菜单项)。另一个没有。

有问题的标签页项目包含静态视图,可根据具体情况动态加载一个或另一个视图。在让这个设置工作的同时,我发现主标签视图没有自动发送,例如viewWillAppear和viewWillDisappear消息到我的动态子视图。

Apple docs解释说这是因为系统无法识别动态添加的视图。

@interface MyTabViewController : UIViewController
{
    UIView *mainView;
    FirstViewController *aController;
    SecondViewController *bController;
}
...
if (index == 0)
{
    self.aController = [[FirstViewController alloc]
        initWithNibName:@"FirstViewController" bundle:nil];            
    [self.mainView addSubview:aController.view];
    [self.aController viewWillAppear:YES];
}

如何将 StatusBar尺寸更改事件添加到动态子视图中? “didChangeStatusBarFrame”不起作用,如其他地方所述。

3 个答案:

答案 0 :(得分:0)

你看过this question吗?

另外,我们可以使用application:didChangeStatusBarFrame:看到您的App Delegate代码吗?

答案 1 :(得分:0)

你可以自己编写一个调整大小,但通常这是通过使用“自动调整大小掩码”来完成的。 (UIView有一个属性autoresizingMask)。

答案 2 :(得分:0)

我不确定,但由于您以编程方式添加了这些视图,因此您可能忘记设置自动调整大小的掩码。如果没有它,状态栏框架更改时视图将不会自动调整大小。

[newView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];

我希望它有所帮助。

相关问题