1

我正在尝试将 iAD 横幅添加到我的项目中,如果发生错误,我将隐藏横幅。这个原因是一个空白空间,我自然希望将 UIWebview 向上移动以填充该空间。问题是我似乎无法重新定位 webview。(我正在使用界面生成器来设置原始位置)。

这张图片说明了我的布局:

在此处输入图像描述

这是我一直试图用来重新定位放置在 viewDidLoad 中的代码:

//iAd
_WebsiteiADBanner.delegate = self;
[_WebsiteiADBanner setHidden:YES];

CGRect oldFrame = self.webView.frame;

CGRect newFrame = CGRectMake(oldFrame.origin.x, oldFrame.origin.y-44, oldFrame.size.width, oldFrame.size.height);
[self.webView setFrame:newFrame];
[self.webView reload];
4

1 回答 1

4

您不应该将该代码放在 ViewDidLoad 中,因为它只加载一次。相反,您必须将它放在它的代理中的 iAd 函数中。(确保您的 iAd 视图已将该 viewController 设置为其委托)。以下示例将对其进行动画处理(尚未测试):

-(void)bannerViewDidLoadAd:(ADBannerView *)banner{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    //hide the banner and move the webview
    [banner setHidden:FALSE];
    CGRect newFrame = CGRectMake(0, 44, self.webView.frame.size.width, self.webView.frame.size.height);
    [self.webView setFrame:newFrame];
    [UIView commitAnimations];
}

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    //show the banner and move the webview to the top
    [banner setHidden:TRUE];
    CGRect newFrame = CGRectMake(0, 0, self.webView.frame.size.width, self.webView.frame.size.height);
    [self.webView setFrame:newFrame];
    [UIView commitAnimations];
}
于 2013-05-30T21:42:00.330 回答