#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: Спасибо, это сделало это!