我的应用中的视图只是纵向 - 我的视图控制器和根视图控制器都确保它们仅使用shouldAutorotateToInterfaceOrientation:
和supportedInterfaceOrientations
旋转到纵向方向,以便同时支持iOS 5和iOS 6.我在视图中添加了一个iAd横幅,它在屏幕顶部正确显示。当我点击它以在iPad上看到测试广告时,测试广告会出现在lanscape中,我希望 - 我知道iAd可能处于任何方向。但是,当我关闭广告时,我的视图是横向的,包含横幅的视图和根视图控制器的视图。当我旋转设备时,它们会旋转回纵向并停留在那里。
如何阻止iAd旋转视图,或在iAd关闭时让我的视图恢复为肖像?
修改:我还尝试使用application:supportedInterfaceOrientationsForWindow:
并将shouldAutoRotate
设置为true - 既没有解决问题。
再次编辑:我还没有运气。 Here's a project具有相当小的视图控制器实现,显示我遇到的错误 - 感谢任何帮助!
答案 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");
}