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

#ios #view #iad #viewcontroller #adbannerview

#iOS #Вид #iad #viewcontroller #adbannerview

Вопрос:

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

У меня есть класс SwitchViewController (: UIViewController), который имеет дело со всеми пользовательскими ViewControllers amp; 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];
  

Ответ №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);
  

Комментарии:

1. Хорошо, я понял это. Я добавил его в самый верхний atIndex и добавил bringSubviewToFront. Но все то же самое. Из моего метода делегирования bannerViewDidLoadAd я вижу, что он был успешно загружен, но все равно выдает ту же ошибку.

2. Если вы добавляете представления после добавления представления ADBanner, вам нужно выполнить [SuperView bringSubviewToFront:AdView]; Эта строка должна быть последней после изменения иерархии представлений.

3. для logancautrell: Спасибо, это сделало это!