1

我正在尝试将 iAd 添加到我的项目中。我试图将 iAd 放入的视图控制器包含一个 UIWebView。底部还添加了一个 UIToolBar。在工具栏上方,我在 StoryBoard 中拖了一个 ADBannerView。这是它的样子:

ios iad 集成

为了展示广告,这是我迄今为止所做的:添加了 iAd 框架,从名为“banner”的 AdBannerView 创建了一个 IBOutLet,在 viewDidLoad 中我将代理分配给了自己。然后我添加了 AdBannerViewDelegate 方法,还添加了以下方法:

- (void) viewDidLayoutSubviews {
    if (self.banner.bannerLoaded) {
        CGRect contentFrame = self.view.bounds;
        CGRect bannerFrame = self.banner.frame;
        contentFrame.size.height -= self.banner.frame.size.height;
        bannerFrame.origin.y = contentFrame.size.height;
        self.banner.frame = bannerFrame;
    }
}

好吧,我已经完成了上述所有操作,iAd 正确显示。

问题:第一次加载视图时,它会正确显示广告,但是当我再次卸载并重新加载视图时,UIToolBar 消失并被 AdBannerView 覆盖,它在 UIToolBar 下方移动。谁能指出问题可能出在哪里以及如何解决?谢谢。

4

2 回答 2

3

您的问题是由于在 viewDidLayoutSubviews 方法中设置了框架。使用自动布局时,不应设置任何框架。在情节提要中,当您添加 addBannerView 时,给它一个高度约束,以及对视图的两侧的间距约束,以及对工具栏的垂直间距约束(Web 视图也应该对顶部有一个垂直间距约束的添加横幅视图)。删除 viewDidLayoutSubviews 方法,它应该可以正常工作。

于 2013-11-16T01:00:20.020 回答
1

对我来说听起来像是一个 z-index 问题,如果是这种情况,解决方案非常简单。如果您使用的是 Interface Builder,则可以使用屏幕左侧的 Document Outline 拖放视图以调整其 z-index。列表的底部是最高的 z-index,因此是屏幕视图的顶部。

或者,如果您想在代码中进行调整,而不是使用addSubview:,您可以使用以下方法之一。

[<#(UIView *)#> insertSubview:<#(UIView *)#> aboveSubview:<#(UIView *)#>];
[<#(UIView *)#> insertSubview:<#(UIView *)#> atIndex:<#(NSInteger)#>];
[<#(UIView *)#> insertSubview:<#(UIView *)#> belowSubview:<#(UIView *)#>];
于 2013-11-15T22:55:04.163 回答