2010-09-20 22 views
2

在我看來,我有一個表格和一個廣告橫幅,所有這些都是通過Interface Builder創建的。但我注意到我的view.frame.size.height似乎通過執行我的應用程序的過程而改變,即使我沒有改變大小。view.frame.size.height在UIViewController中變化

有人可以向我解釋爲什麼會發生這種情況嗎?

我正在做的是將廣告標語從viewDidLoad移出屏幕,此時,如果我打印出self.view.frame.size.height,則值爲:460.00。此時,我還增加了tableView的大小,以便佔用adBanner曾經佔用的空間,並同時將adBanner移出屏幕。

然後當我得到bannerViewDidLoadAd消息時,我再次打印出self.view.frame.size.height,此時它是367.00。我不明白爲什麼視圖的大小發生了變化。

- (void)moveAdvertOffScreen 
{ 
    // Make the table view take up the void left by the banner (320x50 block) 

    CGRect originalTableFrame = self.tableView.frame; 
    CGFloat newTableHeight = self.view.frame.size.height; 

    CGRect newTableFrame = originalTableFrame; 
    newTableFrame.size.height = newTableHeight; 

    // Position the banner below the table view (offscreen) 
    CGRect newBannerFrame = self.adBannerView.frame; 
    newBannerFrame.origin.y = newTableHeight; 

    self.tableView.frame = newTableFrame; 
    self.adBannerView.frame = newBannerFrame;  
} 

- (void)moveAdvertOnScreen 
{ 
    CGRect newBannerFrame = self.adBannerView.frame;  
    newBannerFrame.origin.y = self.view.frame.size.height - newBannerFrame.size.height; 

    CGRect originalTableFrame = self.tableView.frame; 
    CGFloat newTableHeight = self.view.frame.size.height - newBannerFrame.size.height; 

    CGRect newTableFrame = originalTableFrame; 
    newTableFrame.size.height = newTableHeight; 

    [UIView beginAnimations:@"BannerViewIntro" context:NULL]; 
    self.tableView.frame = newTableFrame; 
    self.adBannerView.frame = newBannerFrame; 
    [UIView commitAnimations]; 
} 
+0

你不應該在'viewDidLoad'中檢查視圖的框架。這之後總是會有變化。檢查框架,並在'viewWillLayoutSubviews'中進行適當的調整。 – 2013-08-23 16:50:43

回答

0

你用什麼方法來隱藏橫幅。如果您沒有使用removeFromSuperview:那麼當您調整父視圖的大小時(這可能會自動發生以適應屏幕視圖等),視圖將會自動調整大小。

我建議在界面生成器(在Inspector的Size選項卡上)有一個視圖的自動調整選項的小提琴,直到你找到有效的東西。

+0

我正在重新調整幀大小以將標題從屏幕上移開,而不是隱藏它。 – 2010-09-20 15:40:44

+0

即使您的視圖離開父視圖的邊緣,也可以使用autoresizing。例如,如果您設置了靈活的高度,則視圖將使用父視圖調整其高度。你可能會找到自動調整設置的組合,使它做正確的事情。(固定高度,靈活的底部邊距,固定頂部邊距) – nielsbot 2012-10-18 05:47:41

相關問題