iOS 6和iAds发出太多警告

时间:2012-10-02 19:56:02

标签: ios xcode warnings iad

这是我的iAd代码,我收到有关

的警告
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];
    }
}

1 个答案:

答案 0 :(得分: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

然后你就会安全,而且你将不再对此发出警告。

然后对其他符号执行相同操作。

修改


正如您的评论中所述,iOS 6上也弃用了ADBannerContentSizeIdentifierPortraitADBannerContentSizeIdentifierLandscape

这与setCurrentContentSizeIdentifiersetRequiredContentSizeIdentifiers的弃用有关。

Apple建议不再使用该方法,并使用iOS的自动调整大小功能。