我的状态栏下方显示工具栏的视图存在问题。
在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空间)
所以我的问题是,如何才能正确定位工具栏并摆脱底部的空白区域?
编辑:添加了框架代码......
答案 0 :(得分:0)
您需要允许状态栏。如果根视图控制器是选项卡或导航控制器,则会自动发生这种情况,但情况并非如此。引用Apple的view programming guide:
对于显示不透明状态栏的应用程序,请定位视图 在状态栏下方并相应地减小其大小。减去 从视图高度开始的状态栏高度会阻止顶部 你的部分观点被遮挡了。
在您的情况下,您需要调整mainVC
的框架,使其y原点偏移状态栏高度(20分)。
请记住,在iOS 7中,状态栏默认不是不透明的,因此您可能需要添加一些额外的代码来处理iOS 6/7差异。
答案 1 :(得分:0)
尝试设置工具栏,如下所示:
答案 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];
}