iAd定位不正确

时间:2015-02-11 14:16:50

标签: ios swift sprite-kit iad

我正在使用SpriteKit开发游戏,我想实现iAd。我的应用程序启动后,横幅看起来很好,但它覆盖了我的视图,如http://i.imgur.com/O9Gc6o6.png

所示

将iPhone的方向更改为横向后,横幅消失。当我将方向改回肖像时,它会再次出现,但它的位置会发生偏移:http://i.imgur.com/K3AqGl4.png

此时,横向在方向更改为横向后可见,但也会移动。

这是来自UIViewController的代码:

self.canDisplayBannerAds = true
adBanner = ADBannerView(frame: CGRect.zeroRect)
adBanner.delegate = self
adBanner.hidden = true
adBanner.frame.origin = CGPointMake(0.0, self.view.bounds.size.height - adBanner.frame.size.height)
self.view.addSubview(adBanner)

真正奇怪的是,这种位置转移只发生在我的iPhone上。在模拟器中测试 - 没问题。 Buddy在他的iPhone上测试过 - 没问题。尽管如此仍然覆盖了开头的观点。

发生了什么?我没有想法。在过去的几个小时里,我试图在Google上找到它并没有成功。提前谢谢。

1 个答案:

答案 0 :(得分:0)

iOS 9.2.1,Xcode 7.2.1,启用了ARC

在iPhone的“设置”中查看iAd的开发者设置。

根据我的经验,问题出在self.canDisplayBannerAds = true,然后更改adBanner的框架而不正确地进行按摩,这就是您遇到麻烦的地方。

在所有Apple示例中,他们都没有设置此属性,您可以自己看看:

https://developer.apple.com/library/ios/samplecode/iAdSuite_Storyboard/Listings/BasicBanner_BasicBanner_TextViewController_m.html#//apple_ref/doc/uid/DTS40013458-BasicBanner_BasicBanner_TextViewController_m-DontLinkElementID_6

我在加载广告时动画广告以提升广告时遇到此问题,或类似于此行为。我认为这与此有很大关系......

  

为确保正确显示广告,请使用横幅视图   必须始终调整大小以匹配其中一个内置广告尺寸。    ADBannerView类通过阻止您更改来强制执行此操作   框架直接。相反,您可以更改横幅视图的框架   设置currentContentSizeIdentifier属性。 更改值   存储在此属性中会将横幅视图的帧大小调整为匹配   提供的标识符的大小。在设置特定之前   大小标识符,大小标识符也必须包含在集合中   必须包含在requiredContentSizeIdentifiers中的大小标识符   属性。

如果您感到好奇,本文档的其余部分就在这里:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/iAd_Guide/BannerAdvertisements/BannerAdvertisements.html#//apple_ref/doc/uid/TP40009881-CH3-SW2

来自Apple" Basic Banner"示例我在开始时链接,他们通过首先访问广告横幅的sizeThatFits属性来玩横幅框架:

// all we need to do is ask the banner for a size that fits into the layout area we are using
CGSize sizeForBanner = [self.bannerView sizeThatFits:contentFrame.size];

设置self.canDisplayBannerAds后,会发生以下情况:

取自UIViewController(iAdAdditions)

  

...当视图控制器启用横幅广告时,系统会放置视图   控制器的内容视图里面是系统的新内容视图   管理。这允许系统动态调整原始大小   显示横幅广告时的内容视图,以及管理横幅广告   显示横幅广告本身。这家酒店提供进入   原始内容视图,而不是管理的包含视图   横幅广告展示。

     

如果尚未为视图控制器启用横幅广告显示,请执行此操作   property返回内容视图。

     

如果启用横幅广告显示,然后稍后停用视图   控制器,系统管理的内容视图不会被删除。

希望这会有所帮助。干杯!