在我看來,我有一個表格和一個廣告橫幅,所有這些都是通過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];
}
你不應該在'viewDidLoad'中檢查視圖的框架。這之後總是會有變化。檢查框架,並在'viewWillLayoutSubviews'中進行適當的調整。 – 2013-08-23 16:50:43