2009-08-14 95 views
0

我再次搜索了大約45分鐘的答案這個問題,我想我可能已經找到了答案,但那時我正在閱讀的情況並不完全像我一樣正在跑進去。查看不完全覆蓋整個屏幕

當我加入我的觀點看來,這不是一個完全遮住窗戶我能在上面擺脫了狀態欄,但有在底部的間隙部的觀點並沒有覆蓋

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

從屏幕截圖中可以看到有一個橙色條......它是橙色的,因爲我知道它實際上是在那裏(它是viewController的視圖,但是我嘗試的所有東西我似乎無法獲得添加視圖覆蓋屏幕

這是唯一運行的代碼

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

任何幫助,將不勝感激。

回答

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屬性考慮是否不顯示狀態欄。

+0

謝謝你的信息,我不是使用神奇數字的粉絲 – BWC 2009-08-14 13:42:09

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函數的作用。

+0

我創建通過界面生成器所有的意見......我應該還是這樣做是爲了確保它填補了屏幕? – BWC 2009-08-14 03:57:40

+0

那麼,如果你在你的ViewController的ViewDidLoad函數中調用它,那麼這將工作,但我不知道如何使用Interface Builder。我以編程方式做所有事情。 – 2009-08-14 04:22:39

1

我以前有過這個問題,我只是通過將視圖向下移動20個像素來修復它...... 當您使用接口構建器時,它具有那個漂亮的小「模擬狀態欄」或「模擬工具欄」功能,但我認爲它是一種芬尼。

安德魯和泰勒斯的答案都應該可以工作,但不要以編程方式處理事情。如果你在界面生成器中創建東西,那麼只需安德魯的第二行,不需要重新初始化。

0

好吧,我想通了,現在我覺得有點愚蠢......我回到IB並意識到每個視圖的高度設置爲460而不是480 ...你們給我一個一堆好的信息,我很欣賞這一切。我希望我可以將它們全部標記爲答案。

再次感謝您, BWC

+1

僅供參考這可能是由你可以在IB中調整的模擬指標引起的。他們實際調整視圖時調整它們。 – Lounges 2009-08-14 18:22:55