"Banner View" 的帧在 运行 时会有所不同。 iAd 适用于最大的屏幕,但在较小的屏幕上为空白

Frame for "Banner View" will be different at run time. iAd works for largest screen but blank on smaller ones

我的应用程序即将完成,唯一的问题是我的 iAd 横幅视图只能在最大屏幕上显示。 我已经设置了限制,因此 iAd 可以很好地适应较小的屏幕,但是当我 运行 它在任何尺寸而不是最大的屏幕上时,我看到的只是一个白框。

我目前的密码是:

-(void)bannerViewDidLoadAd:(ADBannerView *)banner {

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[banner setAlpha:1];
[UIView commitAnimations];

}


-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {


[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[banner setAlpha:0];
[UIView commitAnimations];


}

我想知道是否应该在 bannerViewDidLoadAd 中添加一行代码来说明帧大小。

我不断收到的错误是:

Frame for "banner view" will be different at run time.

大小在 运行 时为 (320,50),但在 canvas 时为 (480,60)。

已导入iAd框架并委托添加。 如果有任何区别,它在滚动视图中。

我的所有限制都很好,只是这个帧大小才是问题所在。如果我尝试更新帧,什么也不会发生。

如有任何帮助,我们将不胜感激。

谢谢。

听起来您在 ADBannerView 上设置了尾随和前导约束。

您的 ADBannerView 将知道它在哪个设备上并相应地设置 ADBannerView 的尺寸。你应该让自动版式知道你想要你的广告在哪里。例如,如果您希望 ADBannerView 位于视图底部,则可以使用 Bottom Space to: Bottom Layout Guide 将其固定到视图底部并将其与 Align Center X to: Superview.[=20 对齐=]

此外,不要使用 beginAnimations:context: 方法。来自 UIView Class Reference:

Use of this method is discouraged in iOS 4.0 and later. You should use the block-based animation methods to specify your animations instead.

使用基于块的动画,您的委托方法最终将如下所示:

-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
    [UIView animateWithDuration:1.0 animations:^{
        banner.alpha = 1.0;
    }];
}

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    [UIView animateWithDuration:1.0 animations:^{
        banner.alpha = 0.0;
    }];
}