2014-02-19 63 views
1

我正在製作一個使用spritekit的遊戲,除了當我添加代碼來添加一個iAd時,一切都完美。當我添加iAd的時候一切正常,但似乎iAd正在顯示時調整場景的大小。Spritekit iAds與場景大小混合

這是我的代碼顯示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

好吧,我有點想通了,我正在使用SKSceneScaleModeAspectFit的scaleMode現在我已經改變它到SKSceneScaleModeFill這似乎使場景更短,但它不像aspectFit縮放模式那樣引人注目。我也注意到,iAd不像精靈一樣行動,因爲它實際上會扭曲或調整屏幕大小。如果有人知道如何在視圖頂部創建iAd,請添加評論或解決方案。

編輯

剛纔我想通了,一個可以在ADBannerView添加到界面生成器中的視圖 - 控制,這將顯示在所有場景中的廣告。我現在試圖弄清楚如何設置它不能在特定的場景中顯示,因爲看到spritekit只使用一個viewcontroller。

如果您通過在AdBannerView中添加廣告來添加廣告,那麼您必須在視圖控制器中創建單獨的方法來打開或關閉廣告,通過創建這些獨立的方法,可以手動控制廣告中的廣告從任何場景查看控制器。

在視圖控制器中,您創建了一個場景,此場景變量/對象具有tag或userdata屬性。所以,如果你的遊戲進入不同的場景,你可以撥打

[super scene] setTag:x] 

每次在的NSTimer調用我的控制方法,它會檢查視圖控制器場景變量的值,並基於該值將刪除或重新時間 - 顯示廣告。

+0

您好,我有同樣的問題,但我需要的SKSceneScaleModeAspectFit來調整我的場景,否則場面雙重大小。 –

+0

@EndreOlah雙倍大小?我在第二種方法上編輯過我的帖子,對我沒有任何改動。 – Maccle415

+0

我找到了一個解決方案。我沒有以編程方式創建橫幅視圖,而是將其添加到界面構建器中,並添加到故事板。我認爲問題來自橫向模式,因爲大多數情況下廣告是以縱向模式加載的,而不是旋轉到橫向模式,這會弄亂場景。當我以編程方式添加廣告時,廣告的尺寸較小。在右舷,我已將視圖設置爲橫向並將廣告定位到屏幕的頂部。 –

0

只是一個想法,但你也可以把AdBannerView在通過故事板編輯器,然後設置

self.canDisplayBannerAds = NO; 

這樣,它只是覆蓋在SKScene而不是縮小它。

希望這會有所幫助!

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