1

我正在尝试获取 ADBannerView 的渲染宽度,但它似乎总是与我的 UIScreen 的 mainScreen 的宽度相同:

adBannerView = [[ADBannerView alloc] init];
[self.navController.view addSubview:adBannerView];
NSLog(@"Banner's width: %f.", adBannerView.frame.size.width);
NSLog(@"Screen's width: %f.", [UIScreen mainScreen].bounds.size.width);

上面的两个日志显示相同的值。我想最终使用下面的代码将横幅水平居中,但是我从横幅框架返回的宽度需要是渲染宽度:

adBannerView.frame = CGRectOffset(adBannerView.frame, ([UIScreen mainScreen].bounds.size.width - adBannerView.frame.size.width)/2.0f, 0);

那么如何获得 ADBannerView 的渲染宽度呢?

4

2 回答 2

1

您可以将这些尺寸用于横幅视图:

extern NSString * const ADBannerContentSizeIdentifier320x50;
extern NSString * const ADBannerContentSizeIdentifier480x32;
extern NSString * const ADBannerContentSizeIdentifierPortrait;
extern NSString * const ADBannerContentSizeIdentifierLandscape;

但还有另一个范围:

要调整横幅视图的大小,请在横幅视图上使用 sizeThatFits:,指定包含横幅视图的视图的边界。使用返回的大小调整横幅视图的大小。横幅视图的大小将调整为当前设备和方向的正确宽度和高度。以下代码片段显示了一个可能的实现:

ADBannerView *myBannerView = <#Get a banner view#>;
UIView *myContainingView = <#Get the containing view#>;
NSSize newBannerSize = [myBannerView sizeThatFits:myContainingView];
[myBannerView setBounds:newBannerSize];

如果您只想将 BannerView 居中:

adBannerView.frame = CGRectMake(([UIScreen mainScreen].bounds.size.width - adBannerView.frame.size.width)/2,adBannerView.frame.origin.y,adBannerView.frame.size.width,adBannerView.frame.size.height);

我希望它有所帮助。

有关 ADBannerView 的文档可在此处获得。

于 2014-03-01T20:57:24.553 回答
0

只是想分享一个对我有用的解决方案。看起来我所有的问题都是由于我使用了 Cocos2D。我不应该使用[UIScreen mainScreen].bounds.size.width. 这对我来说是正确的,最后,从我的应用程序的委托(它继承了 CCAppDelegate,所以它就像我试图混合和匹配两种不同的界面大小调整方法一样)居中广告:

adBannerView = [[ADBannerView alloc] init];
adBannerView.backgroundColor = [UIColor whiteColor];
CGSize sizeToFit = [adBannerView sizeThatFits:[[CCDirector sharedDirector] view].frame.size];
// It is assumed that sizeThatFits returns size with a width smaller than the director's width, so just see if it needs to be centered.
[adBannerView setFrame:CGRectMake(([[CCDirector sharedDirector] view].frame.size.width - sizeToFit.width)/2.0f, 0, sizeToFit.width, sizeToFit.height)];
adBannerView.delegate = self;
[self.navController.view addSubview:adBannerView];
于 2014-03-01T21:59:36.663 回答