2

在我的视图中,我有一个表格和一个广告横幅,所有这些都是通过 Interface Builder 创建的。但是我注意到我的 view.frame.size.height 似乎在我的应用程序的执行过程中发生了变化,即使我没有改变大小。

有人可以向我解释为什么会这样吗?

我正在做的是在 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];  
}
4

1 回答 1

0

你用什么方法来隐藏横幅。如果您不使用 removeFromSuperview: 那么当您调整父视图的大小时,视图将自动调整大小(这可能会自动发生以使视图适合屏幕等)。

我建议在 Interface Builder (在 Inspector 的 Size 选项卡上)中调整视图的 autoresize 选项,直到找到可行的方法。

于 2010-09-20T01:24:57.997 回答