在UIViewController中更改view.frame.size.height

时间:2010-09-20 00:57:12

标签: iphone iad

在我看来,我有一个表格和一个广告横幅,所有这些都是通过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];  
}

1 个答案:

答案 0 :(得分:0)

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

我建议在Interface Builder中(在Inspector的“大小”选项卡上)查看视图的自动调整大小选项,直到找到可行的方法。