所以我已经将iAd添加到我的应用程序中,并且我已经非常简单地完成了这项工作。通过将iAds导入ViewController.h并将以下代码放入ViewController.m文件中:
self.canDisplayBannerAds = YES;
然而,当我添加加载时,屏幕会被挤压。所有图像和精灵都变短了。
有没有什么方法可以将添加物覆盖在SKScene之上?所以这不会影响下面的元素 - 所以它会停止压扁?
此外,是否有办法只在某些SKScenes中运行横幅广告,或者当BOOL从YES更改为NO?
已更新
我项目的代码:
#import "XYZViewController.h"
#import "XYZMenuScene.h"
#import <iAd/iAd.h>
@implementation XYZViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [XYZMenuScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
//iAds Enabled
self.canDisplayBannerAds = YES;
// Present the scene.
[skView presentScene:scene];
}
这就是我在iAds方面的全部内容。它使整个场景向上推,为广告横幅腾出空间。我希望它只是在现场,而不是推动任何东西。所以它涵盖了,而不是推动。
答案 0 :(得分:1)
要进行叠加,您可以将横幅的Z位置设置为高于内容的其余部分,默认情况下为0。
例如:
banner.layer.zPosition=2;
但是我相信iAd框架内置了一些方法,您可以覆盖该方法来控制广告何时必须显示以及何时不应该显示,并为您提供更多控制权。 广告可用时会调用特定方法,就像您说的那样,只有当布尔值为1或0时才会显示广告。
例如:
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
if(showADS==1)
{
if (!self.bannerIsVisible)
{
[UIView beginAnimations:@"animateAdBannerOn" context:NULL];
// Assumes the banner view is just off the bottom of the screen.
banner.frame = CGRectOffset(banner.frame, 0, -banner.frame.size.height);
[UIView commitAnimations];
self.bannerIsVisible = YES;
}
}
else
{NSlog(@"No ads");}
}
查看苹果公司关于此的文档,他们真的很有帮助 https://developer.apple.com/library/ios/documentation/userexperience/Conceptual/iAd_Guide/WorkingwithBannerViews/WorkingwithBannerViews.html
但是,让我们举一个完整的例子。 横幅实例仅适用于您之外的iAd方法。 在您的视图中执行了加载方法:
- (void)viewDidLoad
{
self.canDisplayBannerAds=YES;
}
加载广告时调用此方法,此方法指定广告的位置
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
banner.layer.zPosition=2;
/*do all the additional like checking is the boolean is 1 or 0 etc.*/
}
如果您正在使用iAd和sprite工具包,则需要从场景类中调用视图控制器中的方法来执行所有广告工作。
假设您在视图控制器中有一个名为 checkAD 的方法,用于检查广告是否应该显示等。
您可以使用此代码
从场景类中调用此方法if([self.delegate respondsToSelector:@selector(checkAD)]){
[self.delegate checkAD];
}
答案 1 :(得分:0)
在容器视图中添加SKSCene可能有所帮助。根据我的经验,当通过canDisplayBannerAds添加iAd时,UIViewController的任何Apple子类都可以做奇怪的事情。