我的目标是将Google DFP广告管理系统标题视图(横幅广告)添加到HTML页面,并在iPad上滚动显示HTML。
使用UIWebView
显示HTML,这在iOS上是正常的。
如何将DFP广告管理系统标题视图(继承自UIView
)与内容对齐,以便滚动,就好像它是页面的一部分一样?
到目前为止我做了什么:
UIWebView
具有*scrollview
属性。 webview.scrollview
的子视图。 将横幅广告视图插入网络视图的scrollview
。
for (UIView *view in self.webview.scrollView.subviews) {
CGRect frame = view.frame;
frame.origin.y += bannerAdvertsHeight;
frame.size.height -= bannerAdvertsHeight;
view.frame = frame;
}
[self.webview.scrollView addSubview:self.dfpBannerView];
我目前无法访问iPad,但这可以在模拟器上运行。我不确定这是否是一个“好”的解决方案。如果您认为我的方法存在任何问题,请告诉我。
答案 0 :(得分:1)
这是UIWebView
的视图层次结构:
(gdb) po [webView recursiveDescription]
<UIWebView: 0x68220e0; frame = (0 0; 320 460); >
| <UIScrollView: 0x4b2bee0; frame = (0 0; 320 460); >
| | <UIImageView: 0x4b2dca0; frame = (0 0; 54 54); >
| | <UIImageView: 0x4b2da20; frame = (0 0; 54 54); >
| | <UIImageView: 0x4b2d9c0; frame = (0 0; 54 54); >
| | <UIImageView: 0x4b12030; frame = (0 0; 54 54) >
| | <UIImageView: 0x4b11fd0; frame = (-14.5 14.5; 30 1); >
| | <UIImageView: 0x4b11f70; frame = (-14.5 14.5; 30 1); >
| | <UIImageView: 0x4b11f10; frame = (0 0; 1 30); >
| | <UIImageView: 0x4b11eb0; frame = (0 0; 1 30); >
| | <UIImageView: 0x4b11e50; frame = (0 430; 320 30); >
| | <UIImageView: 0x4b2d0c0; frame = (0 0; 320 30); >
| | <UIWebBrowserView: 0x6005800; frame = (0 0; 320 460); >
查看层次结构,您应该将横幅添加到UIWebBrowserView
,如果没有,则应将其添加到其上:
for (id view in self.webview.scrollView.subviews) {
if (![view isKindOfClass:[UIImageView class]]) {
CGRect frame = view.frame;
frame.origin.y += bannerAdvertsHeight;
frame.size.height -= bannerAdvertsHeight;
view.frame = frame;
}
}
[self.webview.scrollView addSubview:self.dfpBannerView];
虽然这是一种黑客行为,但您可能会在以后的iOS更新中遇到麻烦。