所以在viewdidload中我有
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
表示iAd的横幅。我为iOS 4.2 +构建调试器控制台告诉我:
ADBannerView:不推荐使用ADBannerContentSizeIdentifier320x50, 请改用ADBannerContentSizeIdentifierPortrait
所以我这样做:
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
并在4.1中降低应用程序崩溃,告诉我EXC_BAD_ACCESS。
我不知道要采用哪一个,但320x50的版本适用于较新版本,但我从控制台获得了通知/错误。有什么建议吗?
答案 0 :(得分:5)
好的,我让它像这样工作:
NSString *os = [[UIDevice currentDevice] systemVersion];
NSString *ioss = [os stringByReplacingOccurrencesOfString:@"." withString:@""];
if ([ioss length] == 2) {
NSLog(@"length = 2");
float x = ([ioss floatValue]*10);
NSString *ios = [[NSString alloc] initWithFormat:@"%.f",x];
if ([ios floatValue] > 419) {
NSLog(@"Portrait");
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
NSLog(@"320x50");
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}
}
else if ([ioss length] == 3) {
NSString *ios = ioss;
NSLog(@"length = 3");
if ([ios floatValue] > 419) {
NSLog(@"Portrait");
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
NSLog(@"320x50");
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}
}
请注意,此方法可用于所有其他类型的内容,它的作用是检测ios版本,并在高于给定版本及以下版本时执行操作。
但这也适用于我的情况:
if ( &ADBannerContentSizeIdentifierPortrait != NULL ) {
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}
答案 1 :(得分:2)
ADBannerContentSizeIdentifierPortrait
,因此它会引发错误。你可以做的是检查符号是否存在,并根据它设置属性。
if ( &ADBannerContentSizeIdentifierPortrait != NULL ) {
self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}