在横向应用程序中打开iAd会拧紧整个方向

时间:2013-02-08 13:24:49

标签: ios ios6 iad

我的应用以横向模式运行。我不支持纵向方向,并且在所有屏幕中,如果我将设备旋转为纵向,一切都如预期的那样在景观中。

我正在展示iAd横幅,它们看起来不错,当它们与超级视图一起旋转时,它们会旋转。关于横幅展示,一切都很好。

问题在于,当我点击它们并打开实际广告时,整个应用方向被搞砸。 iAD以纵向模式打开,它的位置错误,偏移到屏幕的一半,并且它与整个应用程序方向混淆,将其带到一个不受支持和奇怪的肖像模式。

有关如何避免这种情况的想法吗?

一些应用详情:

  • iOS6的
  • 仅限横向模式
  • 某些屏幕的Cocos2d + UIKit
  • iAds的集成代码是标准的,如iAds编程指南
  • 中所述
  • 应用程序根视图控制器是一个简单的UIViewController,没有导航控制器或类似的东西。
  • 它不使用自动布局。

3 个答案:

答案 0 :(得分:1)

我还在Cocos2d-landscape游戏中使用了iAds。对我来说,它的工作。

以下是托管的文件:Download

-(void)showBannerView
{
    _adBannerViewIsVisible = true;
    AppController * myDelegate = (((AppController*) [UIApplication sharedApplication].delegate));
    [myDelegate.navController.view addSubview:self.adBannerView];

    if (self.adBannerView)
    {
        [UIView animateWithDuration:0.5
                              delay:0.1
                            options: UIViewAnimationCurveEaseOut
                         animations:^
         {
             CGSize s = [[CCDirector sharedDirector] winSize];

             CGRect frame = self.adBannerView.frame;
             frame.origin.y = s.height - frame.size.height;
             frame.origin.x = (s.width/2.0f - frame.size.width/2.0f);

             self.adBannerView.frame = frame;
         }
                         completion:^(BOOL finished)
         {
         }];
    }

}

答案 1 :(得分:1)

您需要将AdBannerView设置为仅显示横向广告:

adBannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierLandscape];
adBannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;

这样,不应加载不支持横向的广告。请注意,这会导致填充率下降。

答案 2 :(得分:0)

这个问题让我搞砸了2天 我甚至放弃了iAd 直到我遇到同样的问题,游戏中心认证,总是以纵向打开,并以相同的方式拧紧应用程序的整个方向。

然而,我在谷歌搜索中几乎立即找到了游戏中心的解决方案。 我尝试为iAd应用相同的解决方案,但它确实有用。

主要想法是让您的应用在两者中运行 肖像和风景(在app的信息plist中)

然后在视图控制器中将优先方向设置为横向右侧,允许旋转方向并支持横向和纵向。

详细答案如下:

Gamecenter authentication in landscape only Cocos2d with CCLayer for iOS 6

特别感谢Sylvan!