代码之家  ›  专栏  ›  技术社区  ›  Cocoa Dev

iOS 6和iAds发出过多警告

  •  3
  • Cocoa Dev  · 技术社区  · 12 年前

    这是我的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 回复  |  直到 12 年前
        1
  •  8
  •   Macmade    12 年前

    您正在使用 不赞成的 方法/符号。

    弃用意味着方法/符号仍然在这里,通常仍然有效,但它们可能会在未来的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_预设.h。

    所以不是 ADBannerContentSizeIdentifier320x50 ,简单使用 ADBannerContentSizeIdentifierPortrait
    与相同 ADBannerContentSizeIdentifier480x32 使用 ADBannerContentSizeIdentifierLandscape 相反

    这样你就安全了,你就不会再有关于这件事的警告了。

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

    编辑


    正如你在评论中所说, 广告横幅内容尺寸标识纵向 广告横幅ContentSizeIdentifier横向 在iOS 6上也不推荐使用。

    这与 setCurrentContentSizeIdentifier setRequiredContentSizeIdentifiers

    苹果公司建议不再使用这种方法,并使用 自动调整大小 iOS的功能。