繁体   English   中英

如何在iOS 7中获得ADBannerView的渲染宽度?

[英]How do you get an ADBannerView's rendered width in iOS 7?

我正在尝试获取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的渲染宽度?

您可以将这些尺寸用于bannerView:

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的文档。

只是想分享一个对我有用的解决方案。 看来我所有的问题都归因于我使用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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM