UIToolBar带状态栏

时间:2013-09-15 17:51:09

标签: ios objective-c interface-builder

我的状态栏下方显示工具栏的视图存在问题。

在Interface Builder中,我的视图看起来像......

Interface Builder

组装视图控制器的代码......

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    self.mainVC = [[ChartVC alloc] initWithNibName:@"ChartVC_iPad" bundle:nil];
    CGRect oldFrame = self.window.frame;
    self.mainVC.view.frame = CGRectMake(0, 20, oldFrame.size.width, oldFrame.size.height - 20);
    self.window.rootViewController = self.mainVC;

    [self.window makeKeyAndVisible];
}

它在模拟器中的显示方式...... - (注意底部额外的20px空间)

Simulator

所以我的问题是,如何才能正确定位工具栏并摆脱底部的空白区域?

编辑:添加了框架代码......

3 个答案:

答案 0 :(得分:0)

您需要允许状态栏。如果根视图控制器是选项卡或导航控制器,则会自动发生这种情况,但情况并非如此。引用Apple的view programming guide

  

对于显示不透明状态栏的应用程序,请定位视图   在状态栏下方并相应地减小其大小。减去   从视图高度开始的状态栏高度会阻止顶部   你的部分观点被遮挡了。

在您的情况下,您需要调整mainVC的框架,使其y原点偏移状态栏高度(20分)。

请记住,在iOS 7中,状态栏默认不是不透明的,因此您可能需要添加一些额外的代码来处理iOS 6/7差异。

答案 1 :(得分:0)

尝试设置工具栏,如下所示:

enter image description here

答案 2 :(得分:0)

将视图控制器设置为窗口的根将调整其视图框架到窗口的框架,这与屏幕边界相同,因此包括状态栏。

[[UIScreen mainScreen] bounds]]替换为[[UIScreen mainScreen] applicationFrame]],这将返回状态栏被切断的矩形,您的窗口将从状态栏下方开始,因此您甚至不需要对您的视图执行任何操作&# 39; s框架,它将被窗口正确设置。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

    self.mainVC = [[ChartVC alloc] initWithNibName:@"ChartVC_iPad" bundle:nil];
    self.window.rootViewController = self.mainVC;

    [self.window makeKeyAndVisible];
}