我正在SpriteKit开发一个游戏,我想实现iAd。在我的应用程序启动后,横幅看起来很不错,但它覆盖了我的视图,如这里所示http://i.imgur.com/O9Gc6o6.png
当我将iPhone的方向改为横向后,banner就会消失。当我将方向改回“纵向”时,它再次出现,但它的位置已移动: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上。在模拟器上测试过了-没问题。巴迪用他的iPhone做了测试-没问题。不过,在一开始的时候,还是有人遮住了视线。
发生什么事?我没主意了。在过去的几个小时里,我试图在谷歌上找到它,但没有成功。提前谢谢。

最佳答案

iOS 9.2.1,Xcode 7.2.1,启用ARC
在iPhone的“设置”中检查开发人员的iAd设置。
根据我的经验,问题在于self.canDisplayBannerAds = true然后在没有正确按摩的情况下更改adBanner的框架,这就是您遇到麻烦的地方。
在所有的苹果示例中,他们从未设置此属性,您可以自己看到:
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属性。更改值
存储在此属性中,将标题视图的框架调整为匹配的大小
提供的标识符的大小。在你设置一个特殊的
大小标识符,大小标识符也必须包含在集合中
所需ContentSizeIdentifiers中包含的大小标识符
财产。
如果您有兴趣的话,本文档的其余部分在这里:
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(iaadditions)
…当视图控制器启用横幅广告时,系统会将视图
控制器的内容视图位于系统
管理。这允许系统动态调整原始文件的大小
显示横幅广告时的内容视图,以及管理
横幅广告的展示。此属性提供对
原始内容视图,而不是管理
横幅广告展示。
如果未为视图控制器启用横幅广告显示,则
属性返回内容视图。
如果对视图启用了横幅广告显示,然后在以后禁用了横幅广告显示
控制器,未删除系统管理的内容视图。
希望这有帮助。干杯!

09-10 18:47