我差不多完成了我的应用程序,我唯一的问题是我的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),但在画布中为(480,60)。
已导入iAd框架并添加了委托。 如果这有任何区别,它就在滚动视图中。
我所有的约束都很好,只是这个框架尺寸才是问题所在。如果我试图更新帧没有任何反应。
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
听起来你的ADBannerView
设置了尾随和领先约束。
您的ADBannerView
会知道它所在的设备,并相应地设置ADBannerView
的尺寸。您应该让自动布局知道您希望广告的位置。例如,如果您希望ADBannerView
位于视图的底部,则可以使用Bottom Space to: Bottom Layout Guide
将其固定到视图的底部,并将其与Align Center X to: Superview
对齐。
另外,请勿使用beginAnimations:context:
方法。来自UIView Class Reference:
在iOS 4.0及更高版本中不鼓励使用此方法。你应该用 基于块的动画方法来指定你的动画。
使用基于块的动画,您的委托方法最终会如下所示:
-(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;
}];
}