我正在使用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上找到它并没有成功。提前谢谢。
答案 0 :(得分:0)
iOS 9.2.1,Xcode 7.2.1,启用了ARC
在iPhone的“设置”中查看iAd的开发者设置。
根据我的经验,问题出在self.canDisplayBannerAds = true
,然后更改adBanner的框架而不正确地进行按摩,这就是您遇到麻烦的地方。
在所有Apple示例中,他们都没有设置此属性,您可以自己看看:
我在加载广告时动画广告以提升广告时遇到此问题,或类似于此行为。我认为这与此有很大关系......
为确保正确显示广告,请使用横幅视图 必须始终调整大小以匹配其中一个内置广告尺寸。 ADBannerView类通过阻止您更改来强制执行此操作 框架直接。相反,您可以更改横幅视图的框架 设置currentContentSizeIdentifier属性。 更改值 存储在此属性中会将横幅视图的帧大小调整为匹配 提供的标识符的大小。在设置特定之前 大小标识符,大小标识符也必须包含在集合中 必须包含在requiredContentSizeIdentifiers中的大小标识符 属性。
如果您感到好奇,本文档的其余部分就在这里:
来自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返回内容视图。
如果启用横幅广告显示,然后稍后停用视图 控制器,系统管理的内容视图不会被删除。
希望这会有所帮助。干杯!