0

我正在安装 AdMob 的广告,并且有一个 GADBannerView。

安装后会出现一个banner,点击后会滑出一个页面覆盖整个屏幕,并在其中显示广告内容。

问题是,某些广告内容,例如视频,必须横向播放。但是,我不希望我的应用程序的其他部分旋转,因为该应用程序不是为横向查看而设计的。

那么,我怎样才能实现可以实现这种功能的东西呢?

4

3 回答 3

1

尝试为此使用通知。每次更改您的设备方向时,通知都会调用选择器。

把这个写在你的 viewDidLoad 中:

 [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setScreenWithDeviceOrientation:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

然后定义选择器如下:

-(void)setScreenWithDeviceOrientation:(NSNotification *)notification
{
  UIDeviceOrientation orientation=[[UIDevice currentDevice] orientation];

  if(orientation==UIInterfaceOrientationPortrait)  //Portrait orientation
    {
       // setView frame for portrait mode    
    }
    else if(orientation==UIInterfaceOrientationPortraitUpsideDown)  // PortraitUpsideDown
    {
        // setView frame for upside down portrait mode 
    }
    else if(orientation==UIInterfaceOrientationLandscapeLeft)
    {
       // setView frame for Landscape Left mode 
    }
    else if(orientation==UIInterfaceOrientationLandscapeRight)  //landscape Right
    {
        // setView frame for Landscape Right mode 
    }
    else
    {
        NSLog(@"No Orientation");

    }

}

每次您的设备改变方向时都会触发此方法。根据当前方向,您应该调整视图。

我希望这能帮到您。

于 2013-01-07T18:06:15.433 回答
1

你在使用 iOS 6 吗?在这种情况下,您应该能够限制视图控制器处理的方向。例如,在处理 GADBannerView 的视图控制器中,您可以放置​​:

// Tell the system what we support
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

// Tell the system It should autorotate
- (BOOL) shouldAutorotate {
    return NO;
}

// Tell the system which initial orientation we want to have
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

这应该使您的视图控制器仅支持纵向。

于 2013-01-08T00:04:27.243 回答
0

你看过这个问题和答案吗?这解释了单个视图如何在应用程序的其余部分不支持的特定方向上工作:

仅自动旋转 MpMoviePlayerControler iOS 6

于 2013-01-07T17:14:51.367 回答