我几乎已经完成了我的应用程序,唯一的问题是我的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框架已导入,添加已委派。如果有什么不同的话,它在滚动视图中。
我所有的限制都很好,只是这个框架尺寸是个问题。如果我尝试更新帧,则不会发生任何事情。
如有任何帮助,我们将不胜感激。
谢谢。
听起来您在ADBannerView
上设置了尾随约束和前导约束。
您的ADBannerView
将知道它在哪个设备上,并相应地设置ADBannerView
的尺寸。你只需要让Auto Layout知道你想让你的广告在哪里。例如,如果你想让ADBannerView
在你的视图的底部,那么你可以用Bottom Space to: Bottom Layout Guide
将它固定在视图的底部并与Align Center X to: Superview
对齐。
另外,不要使用beginAnimations:context:
方法。来自UIView类参考:
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;
}];
}