我正在使用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时它会使场景变小,是否有方法或某些东西允许不调整场景的大小?
非常感谢帮助,谢谢!
答案 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)
还有另一种方法可以解决这个问题。你可能想看一下这个主题。
只是预览:
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];