2009-08-18 32 views
0

在viewDidLoad方法我增加它们的任意组合,我无法得到它的工作:如何确保tableViewController视图占用全屏?

CGRect appFrame = [[UIScreen mainScreen] applicationFrame]; 
[[self tableView] setBounds:appFrame]; 
// self.view.frame = appFrame; 
// self.view.bounds = appFrame; 
// [[self tableVew] setFrame:appFrame]; 
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; 

总是有我以前的屏幕,显示通过顶部的20像素的差距。

回答

3

20px是状态栏的空间(文档位于-applicationFrame覆盖此)。你关闭了状态栏(使用-setStatusBarHidden:animated:)?

+0

我没有隐藏状态栏。它仍然可见。 与我的旧屏幕显示的差距就在状态栏下方。 你可能是对的,它与状态栏有关。 – Bryan 2009-08-18 20:38:21

+0

问题是applicationFrame为状态栏提供了20px的偏移量。然后,您将该框架应用于视图,该视图本身位于另一个视图内(该视窗如果没有其他可能),并且您的新框架与您的父框架偏移20px。您实际上想要将您的框架设置为父框架的大小(或最终是窗口的框架)。该窗口已经全屏。你在这里提到的“上一屏”是什么? – 2009-08-18 21:25:46

+0

感谢罗布。前一个屏幕是另一个viewController - 我的主要游戏屏幕。我正在使用的屏幕是结果屏幕。您的建议在这里立即引导到我的解决方案下面。谢谢。 – Bryan 2009-08-18 21:49:32

0

而不是将边界设置为应用程序框架: CGRect appFrame = [[UIScreen mainScreen] applicationFrame]; 我将边界设置为应用程序边界: CGRect appFrame = [[UIScreen mainScreen] bounds];

然后我将其设置为我的桌面视图的边界 [[self tableView] setBounds:appFrame];