3

我有带有 2 个选项卡的 UITabBarController。当状态栏大小发生变化时(模拟器“切换通话状态栏”菜单项),调整大小就可以了。另一个没有。

有问题的选项卡项包含一个静态视图,该视图会根据某些内容动态加载一个或另一个视图。在使此设置正常工作时,我发现主选项卡视图不会自动将例如 viewWillAppear 和 viewWillDisappear 消息发送到我的动态子视图。

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

@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”不起作用。

4

3 回答 3

0

你看过这个问题吗?

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

于 2010-11-28T20:13:21.970 回答
0

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

于 2010-11-28T20:35:49.703 回答
0

我不确定,但是由于您以编程方式添加这些视图,因此您可能忘记设置自动调整大小掩码。没有它,当状态栏框架发生变化时,视图不会自动调整大小。

[newView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];

我希望它有所帮助。

于 2012-02-29T13:09:27.977 回答