2015-02-11 105 views
1

我正在SpriteKit上进行游戏,我想实现iAd。在我的应用程序启动后,横幅看起来很好,但它覆盖了我的视图,如图所示http://i.imgur.com/O9Gc6o6.pngiAd定位不正确

将我的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。在模拟器中测试它 - 没有问题。好友在他的iPhone上测试 - 没有问题。尽管如此,在开始的时候仍然覆盖了这个观点。

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

+0

首先,您是否在视图中使用自动布局?如果是这样,您希望使用自动布局约束来放置您的adBanner,而不是简单地设置它的框架。 – Doug 2015-02-11 14:25:10

+0

关于它的重叠,你将它放在现有视图的顶部。为防止它重叠,您需要通过横幅的高度减小视图的高度,然后将横幅放在视图的底部。 – Doug 2015-02-11 14:26:43

+0

哦。我的。神。为什么我之前没有尝试过?使用故事板放置iAd横幅并使用IBOutlet连接到代码后,所有内容都可以正常工作。谢谢!!!顺便说一句,我仍然没有得到它为什么问题只出现在我的手机上......奇怪... – 2015-02-11 14:36:31

回答

0

的iOS 9.2.1,7.2.1的Xcode,ARC启用

检查的iAd开发者设置中设置为你的iPhone。

根据我的经验,问题是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

我就遇到了这个动画的adBanner何时提出,一旦广告被加载,或东西类似于这种行为。我认为它有很多事情要做这个......

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

本文档的其余部分是在这里,如果你很好奇:

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

从苹果“基本旗帜”比如我在开头的链接,他们的旗帜帧通过玩首先访问广告横幅的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)

...当一个视图控制器能够横幅广告,系统提出了系统 管理新内容视图内的视图 控制器的内容视图。这允许系统在显示横幅广告时动态调整原始内容视图的大小,以及管理横幅广告本身的显示。此媒体资源提供了访问 原始内容视图,而不是包含管理 横幅广告展示的视图。

如果尚未为视图控制器启用横幅广告显示,则此 属性将返回内容视图。

如果横幅广告显示已启用,之后对于控制器的视图 禁用,则不会删除系统管理的内容视图。

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

+0

... iAd将停产:https://developer.apple.com/news/?id=01152016a – FranMowinckel 2016-02-16 23:10:41

+0

iAd应用程序网络将被停用,而不是iAd。 – 2016-02-16 23:22:22

+0

嘿,谢谢你的回复,但不知道你是否注意到了 - 我在一年前发布了这个问题:)现在不处理广告,但如果我再次遇到这个问题,我会知道去哪里看! – 2016-02-17 22:19:51