请随意引用 GitHub 上托管的示例 Xcode 项目,该项目演示了此问题:IAdBannerBugDemo
当 UITableView 下方和 UITabBar 上方显示 AdBannerView 时,调用 bannerViewActionDidFinish:
后,AdBannerView 会错误地移动到其父 View 的顶部。
我的问题是:
- 是否有有效的解决方法,而不是造成手部堵塞?如果是这样,解决方法是什么?
- 这是 iOS SDK 的错误吗?
首先,这里有两张屏幕截图说明了我的问题。
- 按第一个屏幕截图中显示的按钮。
- 等待 iAd 加载。
- 点击 iAd。
- 按全屏 iAd 左上角的黑色 X 关闭 iAd。
- 请注意,iAd 移至顶部(第二张屏幕截图)
按所示按钮并等待 iAd 加载
按/点击 iAd 横幅即可全屏查看广告
关闭全屏 iAd,并注意 iOS SDK 将 iAD 横幅移至其 super View 的顶部
通过命中断点等,我注意到 [UIViewControllerWrapper setFrame:]
负责重新定位 AdBannerView,但这完全超出我的控制范围,因为它是 Apple 框架的一部分。
解决此问题的唯一方法是通过在负责正确放置 AdBannerView 的 View Controller 中重写 viewWillLayoutSubviews
来更正 AdBannerView 的位置。
但即使这种解决方法也会导致 AdBannerView 从其 super View 的顶部跳转到正确的位置(表格 View 下方、选项卡栏上方,包含在表格 View 的 super View 中)。
一个好的答案是发布示例代码,说明如何克服这个棘手的问题。
I have started a thread on Apple's Developer Forums ,还有。因此,请随时查阅此主题。
最佳答案
当使用 iAd 横幅和 uitableviewcontroller 时,您可以将其放置在 tableview 的标题中,因为 table viewcontroller 控制 tableview 的框架和边界。如果您想在 tableview 上方或下方添加横幅,您必须有一个 uiviewcontroller 并将 uitableview 添加到其中,以便您可以从 uiviewcontroller 控制 table view 的框架和边界。横幅将保留在您放置的位置,并且您必须使用横幅在 View 中和 View 外的动画来对 TableView 框架和边界进行动画处理。
使用 uitableviewcontroller 没有解决办法。并且使用 uiviewcontroller 只能使用动态 tableciew。静态 TableView 仅存在于uitableviewcontroller中。我希望这有帮助!
关于iphone - 在bannerViewActionDidFinish : Bug or Not?之后AdBannerView移动到 super View 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157294/