iAd BannerView contentsizeIdentifier Портрет или 320x50? - PullRequest
2 голосов
/ 14 июля 2011

Так что в viewdidload у меня есть

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, работает на более новых версиях, но я получаю это уведомление / ошибку из консоли. Есть предложения?

Ответы [ 2 ]

5 голосов
/ 18 июля 2011

Хорошо, я заставил его работать так:

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 голосов
/ 15 июля 2011

ADBannerContentSizeIdentifierPortrait не существует в версиях iOS до 4.2, поэтому возникает ошибка.Что вы можете сделать, это проверить, существует ли символ и установить свойства на основе этого.

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