Spritekit iAds搞乱场景大小

时间:2014-02-19 07:06:26

标签: objective-c sprite-kit iad

我正在使用spritekit制作游戏,一切都很完美,除非我添加代码添加iAd。当我添加iAd时,一切正常,但似乎iAd正在调整场景的大小。

这是我显示iAd的代码,它位于ViewController.m中:

 #import <iAd/iAd.h>
 #import "ViewController.h"
 #import "MainMenu.h"


 @implementation ViewController

 - (void)viewDidLoad
 {
     [super viewDidLoad];

     // Configure the view.
     SKView * skView = (SKView *)self.originalContentView;
     skView.showsFPS = YES;

     // Create and configure the scene.
     SKScene * scene = [MainMenu sceneWithSize:skView.bounds.size];
     scene.scaleMode = SKSceneScaleModeAspectFill;

     self.canDisplayBannerAds = YES;

     // Present the scene.
     [skView presentScene:scene];
 }

就像我说的那样,iAd出现了,并且所有功能都正常但是当显示iAd时它会使场景变小,是否有方法或某些东西允许不调整场景的大小?

非常感谢帮助,谢谢!

3 个答案:

答案 0 :(得分:3)

好吧我有点想通了,我正在使用SKSceneScaleModeAspectFit的scaleMode我现在已将它改为SKSceneScaleModeFill这似乎使场景更短但是它没有AspectFit比例模式那么明显。我也注意到iAd不像精灵一样,因为它实际上会扭曲或调整屏幕大小。如果有人知道如何在视图之上创建iAd,比如精灵,请添加评论或解决方案。

修改

我刚刚发现可以在界面构建器中向视图控制器添加ADBannerView,这将在所有场景中显示广告。我现在正试图弄清楚如何将其设置为不在特定场景上显示,因为spritekit仅使用一个viewcontroller。

如果您通过添加AdBannerView添加广告,则必须在视图控制器中创建单独的方法以打开或关闭广告,通过创建这些单独的方法,它允许用户手动控制视图中的广告任何场景的控制器。

在视图控制器中,您有一个您创建的场景,此场景变量/对象具有tag或userdata属性。因此,如果您的游戏进入不同的场景,您可以致电

[super scene] setTag:x]

每当NSTimer调用我的控制方法时,它会检查视图控制器中的scenes标签的值,并根据该值删除或重新显示广告。

答案 1 :(得分:0)

只是一个想法,但你也可以通过Storyboard编辑器放入AdBannerView,然后设置

self.canDisplayBannerAds = NO;

这样它就会覆盖SKScene而不是缩小它。

希望这有帮助!

答案 2 :(得分:0)

还有另一种方法可以解决这个问题。你可能想看一下这个主题。

iAd in Spritekit

只是预览:

adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView.delegate = self;
[adView setFrame:CGRectMake(0, 0, 1024, 768)]; // set to your screen dimensions
[adView setBackgroundColor:[UIColor clearColor]];
[self.view addSubview:adView];