iAd View против пользовательского ViewController

Я пытаюсь интегрировать iAd в свое приложение.

У меня есть класс SwitchViewController (: UIViewController), который имеет дело со всеми пользовательскими ViewControllers и Views, которые у меня есть в этом приложении.

При добавлении представления, как показано ниже, с самым высоким значением atIndex, я получаю сообщение об ошибке:

ADBannerView: WARNING A banner view has an ad but may be obscured

Однако, если я не вставляю все остальные подвиды - iAd работает нормально. Я вижу это, но, конечно, все остальные виды исчезли.

Любые идеи?

Добавление подвида:

ADBannerView *tmpBannerView = [[ADBannerView alloc] initWithFrame:CGRectZero];
self.adView_iPad = tmpBannerView;
self.adView_iPad.frame = CGRectMake(0, 0, self.adView_iPad.frame.size.width, self.adView_iPad.frame.size.height);
self.adView_iPad.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
self.adView_iPad.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
self.adView_iPad.delegate = self;
[self.view insertSubview:self.adView_iPad atIndex:100];

person Stef    schedule 25.10.2011    source источник


Ответы (1)


Вы всегда должны убедиться, что ADBannerView является самым верхним представлением в иерархии, чтобы избежать этого предупреждения. Если какое-либо представление перекрывает его, даже если оно имеет прозрачность, вы получите это предупреждение.

Вы можете просто сделать что-то вроде этого.

ADBannerView *adView = <create the view>;
[superView addSubview:adView];
[superView bringSubviewToFront:adView];

ОБНОВИТЬ:

При установке размера представления лучше всего запрашивать размер у класса.

+ (CGSize)sizeFromBannerContentSizeIdentifier:(NSString *)contentSizeIdentifier

Это вернет высоту и ширину, которые вы должны использовать. Итак, установите рамку следующим образом:

CGSize size = [ADBannerView sizeFromBannerContentSizeIdentifier: ADBannerContentSizeIdentifierPortrait];
self.adView_iPad.frame = CGRectMake(0, 0, size.width, size.height);
person logancautrell    schedule 25.10.2011
comment
Хорошо, я понял. Я добавил его в самом верху atIndex и добавил BringSubviewToFront. Но все так же. Я вижу из моего метода делегата bannerViewDidLoadAd, что он был успешно загружен, но все равно получаю ту же ошибку. - person Stef; 25.10.2011
comment
Если вы добавляете представления после добавления представления ADBanner, вы должны выполнить [superView BringSubviewToFront:adView]; Эта строка должна быть последней после изменения иерархии представлений. - person logancautrell; 25.10.2011
comment
to logancautrell: Спасибо, получилось! - person Stef; 25.10.2011