2015-02-11 3 views
1

Я работаю над игрой в SpriteKit, и я хочу реализовать iAd. После запуска моего приложения баннер выглядит отлично, за исключением того, что он закрывает мой вид, как показано здесь. http://i.imgur.com/O9Gc6o6.pngiAd неправильно расположен

После того, как я изменил ориентацию своего iPhone на пейзаж, баннер исчез. Он появляется снова, когда я меняю ориентацию назад на портрет, но его положение сдвигается:

С этого времени баннер виден после того, как ориентация изменена на пейзаж, но также сдвинута.

Вот мой код от UIViewController:

self.canDisplayBannerAds = true 
adBanner = ADBannerView(frame: CGRect.zeroRect) 
adBanner.delegate = self 
adBanner.hidden = true 
adBanner.frame.origin = CGPointMake(0.0, self.view.bounds.size.height - adBanner.frame.size.height) 
self.view.addSubview(adBanner) 

Что действительно странно, что эта позиция переключение происходит только на моем iPhone. Протестировал его в симуляторе - никаких проблем. Бадди тестировал на своем iPhone - никаких проблем. Тем не менее, покрытие этого вида вначале все еще имело место.

Что происходит? У меня нет идей. Последние несколько часов я пытался найти его в Google без успеха. Заранее спасибо.

+0

Во-первых, используете ли вы автоматический макет в своем представлении? Если это так, вы хотите разместить свой adBanner с помощью ограничений автоматического макета, а не просто установить его фрейм. – Doug

+0

Что касается перекрытия, вы размещаете его поверх существующего вида. Чтобы предотвратить перекрытие, вам нужно уменьшить высоту представления по высоте баннера, а затем поместить баннер в нижней части представления. – Doug

+0

Ох. Мои. Бог. Почему я не попробовал это раньше? После размещения баннера iAd с помощью раскадровки и подключения к коду с IBOutlet все работает правильно. Спасибо!!! BTW Я все еще не понимаю, почему проблема появилась только на моем телефоне ... Weird ... –

ответ

0

IOS 9.2.1, Xcode 7.2.1, ARC включен

Проверьте настройки для разработчиков ОВР в настройках вашего iPhone.

Из моего опыта проблема связана с self.canDisplayBannerAds = true, а затем сменой рамки adBanner без правильного массажа, здесь вы столкнулись с проблемами.

Во всех примерах Apple, они никогда не установить это свойство, вы можете увидеть сами:

https://developer.apple.com/library/ios/samplecode/iAdSuite_Storyboard/Listings/BasicBanner_BasicBanner_TextViewController_m.html#//apple_ref/doc/uid/DTS40013458-BasicBanner_BasicBanner_TextViewController_m-DontLinkElementID_6

Я столкнулся с этим при анимации в adBanner поднять один раз объявление загружается, или что-то подобно этому поведению. Я думаю, что это имеет много общего с этим ...

Для того, чтобы рекламные объявления отображаются правильно, вид баннера всегда должен быть подобран, чтобы соответствовать одному из встроенных в рекламных размерах. Класс ADBannerView обеспечивает это, препятствуя тому, чтобы вы напрямую меняли . Вместо этого вы меняете рамку представления баннера на , устанавливая свойство currentContentSizeIdentifier. Изменение значения , хранящегося в этом объекте, изменяет размер рамки представления баннера на соответствие размер для предоставленного идентификатора. Прежде чем вы сможете установить конкретный идентификатор размера , идентификатор размера также должен быть включен в набор идентификаторов размеров, включенных в свойство requiredContentSizeIdentifiers .

Остальная часть этого документа здесь, если Вам интересно:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/iAd_Guide/BannerAdvertisements/BannerAdvertisements.html#//apple_ref/doc/uid/TP40009881-CH3-SW2

На примере Apple «Basic Banner» я связан в начале, они играют вокруг с баннером кадра по первый доступ к sizeThatFits свойства рекламного баннера:

// all we need to do is ask the banner for a size that fits into the layout area we are using 
CGSize sizeForBanner = [self.bannerView sizeThatFits:contentFrame.size]; 

После self.canDisplayBannerAds установлен, происходит следующее:

Взятые из UIViewController (iAdAdditions)

... Когда-контроллер позволяет баннерную рекламу, система помещает представление содержимого контроллера вид внутри нового контента зрения, что система управляет. Это позволяет системе динамически изменять размер исходного изображения при отображении баннерной рекламы, а также управлять отображением объявления баннера в . Это свойство предоставляет доступ к исходному представлению контента , а не к содержащему виду, который управляет отображением рекламного баннера .

Если отображение представления объявлений не было разрешено для контроллера вида, это свойство возвращает представление содержимого.

Если отображение баннерной рекламы включено, а затем отключено для просмотра контроллера , просмотр содержимого с системным управлением не удаляется.

Надеюсь, это поможет. Ура!

+0

... iAd будет прекращен: https://developer.apple.com/news/?id=01152016a – FranMowinckel

+0

iAd Сеть приложений будет прекращена, а не iAd. –

+0

Эй, спасибо за ответ, но не уверен, если вы заметили - я опубликовал этот вопрос больше года назад :) Сейчас не занимаюсь рекламой, но если у меня будет эта проблема снова, я буду знать, где искать! –

Смежные вопросы