我的 View Controller 中有以下代码:
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
// Configure the view.
SKView * skView = (SKView *)self.view;
if (!skView.scene) {
skView.showsFPS = NO;
skView.showsNodeCount = NO;
skView.showsDrawCount = NO;
// Create and configure the scene.
SKScene * scene = [MenuScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
self.canDisplayBannerAds = YES;
// Present the scene.
[skView presentScene:scene];
}
}
当我运行应用程序时,它会立即崩溃。我收到以下错误消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView scene]: unrecognized selector sent to instance
我无法使用
SKView *skView = (SKView *)self.originalContentView;
因为应用程序处于横向模式。有没有办法在 Landscap Sprite Kit 游戏中显示 iAd?编辑:
我刚刚将此代码添加到 View Controller ,但我得到了相同的结果..
#pragma mark iAd Delegate Methods
-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[banner setAlpha:1];
[UIView commitAnimations];
}
最佳答案
我遇到了这个问题并通过创建 ABBannerView
解决了它属性并将其添加为 subview 。
在我的 ViewController 类中:
adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView.delegate = self;
[adView setFrame:CGRectMake(0, 0, 1024, 768)]; // set to your screen dimensions
[self.view addSubview:adView];
重要的是不要设置
canDisplayBannerAds
View Controller 的属性。我相信正在发生的事情是,如果您确实设置了
canDisplayBannerAds
属性为 true, View 被修改并且不再与 SKView
兼容,并且不再具有场景属性。我确实必须设置框架,以便尺寸正确,否则它是纵向的。
关于ios - 向 Sprite Kit Landscape 添加 iAd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22065908/