AdWhirl - перемещение по центру экрана при вращении - PullRequest
0 голосов
/ 19 октября 2011

Это, наверное, что-то довольно простое. Я пытаюсь внедрить AdWhirl в свое приложение, что я успешно выполнил для технической части. Когда я загружаю свое приложение, приложение загружается, а затем скользит вниз сверху вниз и садится внизу экрана. Однако, когда я поворачиваю устройство, реклама использует «точные» местоположения и уходит с экрана. Когда реклама перезагружается (обновляется каждые 15 секунд), реклама перемещается вверх в нижнюю часть экрана ландшафтного окна. Опять же, при повороте назад из пейзажа, Advert выравнивает себя по центру страницы по вертикали (охватывая контент), пока не загрузится новое объявление. Я приложил несколько фотографий в серии, показывающих, что происходит, все по порядку и взятых с интервалом не менее 10 секунд (показаны тестовые объявления «Hello»).

Мой код из файла Реализации включен в конец этого поста - извините за то, что не использовал формат кода, просто не хотел ставить пробелы перед целым блоком, и я думаю, что это все относительно актуально. Это также доступно в бункере вставки: http://pastebin.com/mzavbj2L

Sam

Извините - я не могу загружать изображения. Пожалуйста, пришлите мне PM для изображений.

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Спасибо за вашу помощь - это было близко к решению (только сегодня он заработал - в основном забыл об этом!).После того, как я внес изменения в мой .h, я пытался позвонить [adWhirlView adWhirlDidReceiveAd:(AdWhirlView *)adView].Это продолжало возвращать ошибки, даже если это было определено в классе AdWhirlView.В качестве исправления я добавил -(void) adWhirlDidReceiveAd:(AdWhirlView *)adView и затем вызывал каждый раз, когда кадр поворачивался [self adWhirlDidReceiveAd:(AdWhirlView *)adView];.

Еще раз спасибо - очень рад, что наконец-то работает.

Сэм

0 голосов
/ 19 октября 2011

Я рекомендую обрабатывать вращение методом willRotateToInterfaceOrientation:duration: или didRotateFromInterfaceOrientation:method. Вы сможете определить, какова ваша новая ориентация, новый размер вашего вида, а затем изменить рамку вашего вида AdWhirl на новое местоположение.

Однако, посмотрев немного ближе, похоже, вам может понадобиться сделать *adView переменной, объявленной в вашем файле .h, чтобы вы могли получить к ней доступ из методов ротации.

Как только вы это сделаете, вы можете установить новый кадр, как вы сделали в viewDidLoad: method:

CGSize adSize = [adView actualAdSize];
CGRect newFrame = adView.frame;
newFrame.size = adSize;
newFrame.origin.x = (self.view.bounds.size.width - adSize.width)/ 2;
newFrame.origin.y = (self.view.bounds.size.height - adSize.height);
adView.frame = newFrame;
[UIView commitAnimations];

В идеале вы должны переместить этот код в его собственный метод, чтобы вы могли просто вызывать его из любого места в коде контроллера представления (например, viewDidLoad и функции (ах) поворота).

...