我再一次搜索了大约45分钟来回答这个问题,我想我可能已经找到了答案,但后来我正在阅读的情况与我遇到的情况不完全相同。
当我添加我的视图时,似乎它没有完全覆盖窗口我能够摆脱顶部的状态栏,但底部有一段空间,视图没有覆盖
alt text http://img177.imageshack.us/img177/8844/picture1zjv.png
从截图中可以看到,有一个橙色的条形图......它是橙色的,因为我知道它实际上是什么(这是viewController的视图,但是我尝试的所有内容似乎都无法获得添加的视图来覆盖屏幕。这是唯一运行的代码
任何帮助都将不胜感激。
答案 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