2012-10-02 59 views
3

這裏是我的iAd的代碼和我得到約iOS 6或成癮者給予太多警告

setRequiredContentSizeIdentifiers - deprecated in iOS 6 
ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2 
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2 
setCurrentContentSizeIdentifier - deprecated in iOS 6 
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2 

我怎麼解決這個問題,所以沒有警告的警告。

- (int)getBannerHeight:(UIDeviceOrientation)orientation 
{ 
    if (UIInterfaceOrientationIsLandscape(orientation)) { 
     return 32; 
    } else { 
     return 50; 
    } 
} 

- (int)getBannerHeight 
{ 
    return [self getBannerHeight:[UIDevice currentDevice].orientation]; 
} 

- (void)createAdBannerView 
{ 
    Class classAdBannerView = NSClassFromString(@"ADBannerView"); 
    if (classAdBannerView != nil) { 
     self->adView = [[classAdBannerView alloc] 
           initWithFrame:CGRectZero]; 
     [adView setRequiredContentSizeIdentifiers:[NSSet setWithObjects: 
                  ADBannerContentSizeIdentifier320x50, 
                  ADBannerContentSizeIdentifier480x32, nil]]; 
     if (UIInterfaceOrientationIsLandscape([UIDevice currentDevice].orientation)) { 
      [adView setCurrentContentSizeIdentifier: 
      ADBannerContentSizeIdentifier480x32]; 
     } else { 
      [adView setCurrentContentSizeIdentifier: 
      ADBannerContentSizeIdentifier320x50]; 
     } 
     [adView setFrame:CGRectOffset([adView frame], 0, 
              -[self getBannerHeight])]; 
     [adView setDelegate:self]; 

     [self.view addSubview:adView];   
    } 
} 

- (void)fixupAdView:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    if (adView != nil) { 
     if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { 
      [adView setCurrentContentSizeIdentifier: 
      ADBannerContentSizeIdentifier480x32]; 
     } else { 
      [adView setCurrentContentSizeIdentifier: 
      ADBannerContentSizeIdentifier320x50]; 
     } 
     [UIView beginAnimations:@"fixupViews" context:nil]; 
     if (bannerIsVisible) { 
      CGRect adBannerViewFrame = [adView frame]; 
      adBannerViewFrame.origin.x = 0; 
      adBannerViewFrame.origin.y = 0; 
      [adView setFrame:adBannerViewFrame]; 
      CGRect contentViewFrame = _contentView.frame; 
      contentViewFrame.origin.y = 
      [self getBannerHeight:toInterfaceOrientation]; 
      contentViewFrame.size.height = self.view.frame.size.height - 
      [self getBannerHeight:toInterfaceOrientation]; 
      _contentView.frame = contentViewFrame; 
     } else { 
      CGRect adBannerViewFrame = [adView frame]; 
      adBannerViewFrame.origin.x = 0; 
      adBannerViewFrame.origin.y = 
      -[self getBannerHeight:toInterfaceOrientation]; 
      [adView setFrame:adBannerViewFrame]; 
      CGRect contentViewFrame = _contentView.frame; 
      contentViewFrame.origin.y = 0; 
      contentViewFrame.size.height = self.view.frame.size.height; 
      _contentView.frame = contentViewFrame; 
     } 
     [UIView commitAnimations]; 
    } 
} 

回答

8

您正在使用過時方法/符號。

棄用意味着方法/符號仍然存在,通常仍然有效,但可能會在未來的iOS版本中刪除它們。

官方文檔總是列出不推薦使用的方法/符號,通常會提供新的方法/符號。

所以我不想說這個,作爲答案,但只是閱讀文檔

關於iOS 6的警告並不算太壞,因爲iOS 6非常新穎。
但也可以修復它們,如果你可以。完成了什麼。

但似乎你還使用在iOS 4.2上棄用的方法/符號!
這實際上是一個問題。目前iOS 4的支持正在下降,所以你的實際代碼可能無法工作很長時間。

所以閱讀文檔(再次),瞭解新的方法,並修復你的代碼。

例如:

ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2 

documentation,你可以閱讀以下內容:

ADBannerContentSizeIdentifier320x50表示該橫幅的看法是 320點的面積爲50分。這個尺寸在iPhone上用於 肖像廣告。 (不推薦使用,請使用 改爲ADBannerContentSizeIdentifierPortrait。)適用於iOS 4.0 及更高版本。在iOS 4.2中棄用。聲明於 ADBannerView_Deprecated.h。

因此,而不是ADBannerContentSizeIdentifier320x50,只需使用ADBannerContentSizeIdentifierPortrait
ADBannerContentSizeIdentifier480x32相同。改爲使用ADBannerContentSizeIdentifierLandscape

然後你會安全的,你不會再有這個警告。

然後簡單地對其他符號做同樣的事情。

編輯


由於您的評論,ADBannerContentSizeIdentifierPortraitADBannerContentSizeIdentifierLandscape規定也不贊成在iOS 6。

這與setCurrentContentSizeIdentifiersetRequiredContentSizeIdentifiers的棄用有關。

Apple建議不要再使用該方法,並使用iOS的自動調整大小功能。

+0

從iOS 6起,ADBannerContentSizeIdentifierPortrait也被棄用 –

+0

請參閱編輯... – Macmade

+0

該死的。這總是一些東西。瞭解任何好的地方(除了Apple的模糊文檔以瞭解關於自動調整功能的信息) –