3

这是我的 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];
    }
}
4

1 回答 1

8

您正在使用已弃用的方法/符号。

弃用意味着方法/符号仍然存在,并且通常仍然有效,但它们可能会在未来的 iOS 版本中被删除。

官方文档总是列出不推荐使用的方法/符号,并且通常提供新的方法/符号。

所以我不想这么说,作为一个答案,但只是阅读文档

关于 iOS 6 的警告并不算太糟糕,因为 iOS 6 是相当新的。
但如果可以的话,也要修复它们。已完成的事情已经完成。

但似乎您也在使用在 iOS 4.2 上已弃用的方法/符号!
这实际上是一个问题。iOS 4 支持目前正在下降,因此您的实际代码可能无法长时间运行。

因此,请再次阅读文档,了解新方法并修复代码。

例如:

ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2

文档中,您可以阅读以下内容:

ADBannerContentSizeIdentifier320x50 表示横幅视图的大小为 320 点乘 50 点。此尺寸在 iPhone 上用于纵向广告。(已弃用。改用 ADBannerContentSizeIdentifierPortrait。)适用于 iOS 4.0 及更高版本。在 iOS 4.2 中已弃用。在 ADBannerView_Deprecated.h 中声明。

因此ADBannerContentSizeIdentifier320x50,只需使用ADBannerContentSizeIdentifierPortrait.
ADBannerContentSizeIdentifier480x32. 改为使用ADBannerContentSizeIdentifierLandscape

这样您就安全了,您将不再收到有关此的警告。

然后简单地对其他符号执行相同的操作。

编辑


如您的评论所述,ADBannerContentSizeIdentifierPortrait并且ADBannerContentSizeIdentifierLandscape在 iOS 6 上也已弃用。

这与 和 的弃用setCurrentContentSizeIdentifier有关setRequiredContentSizeIdentifiers

Apple 建议不要再使用这种方法,而是使用 iOS 的自动调整大小功能。

于 2012-10-02T20:26:19.617 回答