iAd横幅将我的视图旋转到横向

时间:2013-03-23 15:25:41

标签: iphone ipad iad uiinterfaceorientation adbannerview

我的应用中的视图只是纵向 - 我的视图控制器和根视图控制器都确保它们仅使用shouldAutorotateToInterfaceOrientation:supportedInterfaceOrientations旋转到纵向方向,以便同时支持iOS 5和iOS 6.我在视图中添加了一个iAd横幅,它在屏幕顶部正确显示。当我点击它以在iPad上看到测试广告时,测试广告会出现在lanscape中,我希望 - 我知道iAd可能处于任何方向。但是,当我关闭广告时,我的视图是横向的,包含横幅的视图和根视图控制器的视图。当我旋转设备时,它们会旋转回纵向并停留在那里。

如何阻止iAd旋转视图,或在iAd关闭时让我的视图恢复为肖像?

修改:我还尝试使用application:supportedInterfaceOrientationsForWindow:并将shouldAutoRotate设置为true - 既没有解决问题。

再次编辑:我还没有运气。 Here's a project具有相当小的视图控制器实现,显示我遇到的错误 - 感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

我会尝试两件事。首先在应用程序的目标配置(摘要)中设置“支持的界面方向”。

然后,对于界面构建器中的每个视图,在模拟的指标(属性面板上的4选项卡)下,确保选择纵向方向。如果您选择了“推断”,则在显示自身时将采用上一个屏幕方向。

答案 1 :(得分:0)

解决。我的辅助视图控制器必须是主视图的子视图控制器。

答案 2 :(得分:0)

我想我只是推送更新,因为我最终解决了这个问题,这适用于iOS 8和9,首先注册应用程序以跟踪设备方向。

AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

    return YES;
}

现在,当广告完成显示时,您可以检查设备方向并将其强制恢复为纵向。

-(void)bannerViewActionDidFinish:(ADBannerView *)banner{

            UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

            if (UIDeviceOrientationIsLandscape(orientation)) {

                NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
                [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
            }

            //NSLog(@"iAD actions finished");
    }