У меня просто была такая же проблема, и в моем случае она была вызвана не установкой rootViewController в делегате приложения.Вместо этого я просто добавил представление контроллера прямо в окно.
Это поведение можно воспроизвести, внеся одно изменение в пример BasicBanner из iAdSuite от Apple.
В AppDelegate.m измените строку:
self.window.rootViewController = tvc;
до:
[self.window addSubview:tvc.view];
, и реклама всегда будет отображаться в портретной ориентации.Измените строку на настройку rootViewController, и объявление будет вращаться соответствующим образом.
Настройка rootViewController, по-видимому, необходима для того, чтобы модуль iAd мог получать уведомления об ориентации устройства.
По пути я заметил, чтообъявление или, по крайней мере, тестовое объявление, реагирует только на ориентацию устройства и не учитывает интерфейс InterfaceOrientation контроллера во время его запуска.Если вы запустили BasicBanner без вышеуказанной ошибки, а устройство лежало ровно, а приложение находилось в горизонтальном режиме, объявление будет отображаться в портретной ориентации и не будет переориентировано в альбомную ориентацию, пока вы не откроете устройство.Поведение симулятора в равной степени противоречиво.
Я не знаю, относится ли эта слабость к тестовому объявлению или ко всем объявлениям iAd.