查看并未完全覆盖整个屏幕

时间:2009-08-14 03:32:52

标签: iphone view fullscreen

我再一次搜索了大约45分钟来回答这个问题,我想我可能已经找到了答案,但后来我正在阅读的情况与我遇到的情况不完全相同。

当我添加我的视图时,似乎它没有完全覆盖窗口我能够摆脱顶部的状态栏,但底部有一段空间,视图没有覆盖

alt text http://img177.imageshack.us/img177/8844/picture1zjv.png

从截图中可以看到,有一个橙色的条形图......它是橙色的,因为我知道它实际上是什么(这是viewController的视图,但是我尝试的所有内容似乎都无法获得添加的视图来覆盖屏幕。

这是唯一运行的代码

  • (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:mainMenu]; }

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:1)

您应该发布您的代码,但一般情况下,您可以按如下方式在屏幕上填写UIView:

UIView *foo = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];

您可以稍后设置框架:

foo.frame = CGRectMake(0,0,320,480);

要填充屏幕,您应在原点(0,0)处使用320 x 480矩形。这就是上面的CGRectMake函数创建的内容。

答案 1 :(得分:1)

有些事情可能会出错:

您的相框可能太短了。在viewDidLoad:中,您可以添加一个调试语句来检查其高度:

NSLog(@"Height is %f", self.view.frame.size.height);

看起来您希望该值为480,即屏幕的整个高度。

你的起源可能太高了。同样检查你的y偏移:

NSLog(@"y origin is %f", self.view.frame.origin.y);

看起来你希望该值为0。

您的超级视图的来源可能太高了。假设您的此视图只有一个超级视图,此代码将帮助检查视图原点的绝对坐标:

CGPoint absoluteOrigin = [self.view convertPoint:self.view.frame.origin
                                          toView:self.view.superview];
NSLog(@"y origin in superview is %f", absoluteOrigin.y);

您可以标记一些额外的.superview来查找先前视图中的坐标。

顺便说一下,你可能想要做类似这样的事情,而不是仅仅在你的代码中使用480作为幻数:

CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
CGFloat screenHeight = appFrame.size.height;

applicationFrame属性会考虑是否显示状态栏。

答案 2 :(得分:1)

之前我遇到过这个问题,我通过将视图向下移动20像素来修复它... 当你使用界面构建器时,它有一个漂亮的小“模拟状态栏”或“模拟工具栏”功能,但我认为它的那种finnicky。

Andrew和Tylers的答案都应该有效,并不是以编程方式做事情的耻辱:)。如果你在界面构建器中创建东西,只需要安德鲁的第二行,不需要重新初始化。

答案 3 :(得分:0)

好吧,我好好理解它,现在我觉得有点愚蠢...我回到了IB并意识到每个视图的高度设置为460而不是480 ......你们确实给了我一堆很好的信息,我很欣赏这一切。我希望我能把它们全部标记为答案。

再次感谢你, BWC