2011-07-14 29 views
2

所以在viewDidLoad中我有iAd BannerView contentsizeIdentifier肖像還是320x50?

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的那個在較新的版本上工作,但我從控制檯得到該通知/錯誤。有什麼建議麼?

+1

你應該從問題中刪除了答案,將其添加爲一個答案,並接受它。那些來找它的人。 –

回答

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; 
} 
2

ADBannerContentSizeIdentifierPortrait在4.2之前的iOS版本中不存在,因此會引發錯誤。你可以做的是檢查符號是否存在,並根據該屬性設置屬性。

if (&ADBannerContentSizeIdentifierPortrait != NULL) { 
    self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait]; 
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; 
} else { 
    self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50]; 
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 
} 
+0

它前面的「自我」正在絞,其餘的都沒問題。 – JonasG

+0

@Maxner其實我從我的示例代碼中複製了它,我將ADBannerView實例聲明爲self.bannerView。這應該解釋我爲什麼使用它。 –

+0

@Maxner此外['此鏈接'](http://blog.onstreamtv.de/?p=489)應該對版本支持有幫助。 –