【问题标题】:Spritekit iAds messing with scene sizeSpritekit iAds 影响场景大小
【发布时间】:2014-02-19 07:06:25
【问题描述】:

我正在使用 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 显示时它会使场景变小,有没有一种方法或什么东西可以让场景不被调整大小?

非常感谢您的帮助,谢谢!

【问题讨论】:

    标签: objective-c sprite-kit iad


    【解决方案1】:

    好的,所以我有点想通了,我使用的是 SKSceneScaleModeAspectFit 的 scaleMode 我现在已将其更改为 SKSceneScaleModeFill 这似乎使场景更短,但它不像 aspectFit 缩放模式那样明显。我还注意到 iAd 的行为不像精灵,因为它实际上会扭曲或调整屏幕大小。如果有人知道如何在视图顶部创建 iAd,例如 sprite,请添加评论或解决方案。

    编辑

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

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

    在视图控制器中,您创建了一个场景,该场景变量/对象具有标签或用户数据的属性。因此,如果您的游戏进入不同的场景,您可以调用

    [super scene] setTag:x]
    

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

    【讨论】:

    • 嗨,我有同样的问题,但我需要 SKSceneScaleModeAspectFit 来调整我的场景大小,否则场景是双倍大小。
    • @EndreOlah 双倍尺寸?我在上面编辑了我的帖子,第二种方法适用于我,无需对场景进行任何更改。
    • 我找到了解决方案。我没有以编程方式创建横幅视图,而是在界面构建器中将其添加到情节提要中。我认为问题出在横向模式,因为很可能广告是以纵向模式加载的,而不是旋转到横向模式,这会扰乱场景。当我以编程方式添加广告时,广告的尺寸变小了。在右舷,我将视图设置为横向并将广告定位到屏幕顶部。
    • @EndreOlah 这就是我的意思,抱歉我的解释太糟糕了:(
    • 嗨,谢谢。 :) 实际上我正在考虑向我的场景添加协议声明并委托视图控制器来捕获这些协议函数调用以显示和隐藏广告。这可能会奏效。或者简单地调用可能也可以工作的父母函数,但不是很好的解决方案。 :)
    【解决方案2】:

    只是一个想法,但您也可以通过情节提要编辑器将 AdBannerView 放入,然后设置

    self.canDisplayBannerAds = NO;
    

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

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

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

      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];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        • 2017-08-06
        • 2011-12-30
        • 2016-03-24
        • 1970-01-01
        相关资源
        最近更新 更多