首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UICollectionView集成中的HeyZap原生广告

UICollectionView集成中的HeyZap原生广告
EN

Stack Overflow用户
提问于 2016-07-05 19:33:04
回答 1查看 176关注 0票数 1

我正在尝试将HeyZap原生广告中介集成到我的UICollectionView中。我使用的是用IB构建的cells,但当我试图在cells中为自己的wrapperView分配nativeAd.wrapperView时,它不会响应任何点击或手势。下面是我的代码:

代码语言:javascript
复制
cell.hzNativeAd = ...; //Here I assign HZMediatedNativeAd to my cell property
cell.hzNativeAd.presentingViewController = self;
cell.hzNativeAd.shouldShowFacebookAdChoicesView = NO;

//Saving frame, because when I assign HeyZap wrapperView to my UIView frame is 0
CGRect wrapperViewFrame = cell.wrapperView.frame;
cell.wrapperView = cell.hzNativeAd.wrapperView;
cell.wrapperView.frame = wrapperViewFrame;

/*Assigning all labels and images
...
...
...
 */

//Registering Views with HZMediatedNativeAdViewRegisterer
[cell.hzNativeAd registerViews:^(id<HZMediatedNativeAdViewRegisterer>registerer) {
     [registerer registerTitleView:cell.titleLabel tappable:YES];
     [registerer registerBodyView:cell.descriptionLabel tappable:YES];
     [registerer registerCallToActionView:cell.actionButton];
     [registerer registerIconView:cell.imageView tappable:YES];
     [registerer registerCoverImageView:cell.coverImageView tappable:YES];

从HeyZap文档(https://developers.heyzap.com/docs/ios_sdk_native_mediation#step-3-show-native-ads)中,我可以找到如何通过编程来实现这一点。但在iPad上进行测试时,这样做会给我带来非常糟糕的结果。我创建视图,然后添加约束,然后注册这个视图,然后在准备重用时删除它们-所有这些都需要时间,而且我在iPad上有很多滞后。HeyZap支持就是不回复...

所以也许有人也遇到了这个问题。或者我只是在以这种方式分配wrapperView时做错了什么?

感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2016-07-06 05:19:49

我是Heyzap的iOS工程师。首先,让我为原生广告集成的复杂性道歉--在广告网络之间创建一致的界面真的很难,而且由于AdMob需要包装器视图和注册视图,它必须至少那么复杂。无论如何,以下是我认为你的代码中存在的问题:

  1. 这一行:cell.wrapperView = cell.hzNativeAd.wrapperView;将不能正常工作。这只是获取单元格的wrapperView指针并更改它所指向的内容,但这并不会更改单元格的实际子视图-您需要在某个时刻将Heyzap包装器视图添加到视图层次结构中,以便它响应手势。下面是我可能会做的事情:

cell.wrapperView removeFromSuperview;//暂时从视图层次结构中删除包装视图,因为当您从情节提要加载新单元格时,它将是contentView属性的子视图。cell.hzNativeAd.wrapperView.frame = cell.wrapperView.frame;cell.contentView addSubview: cell.hzNativeAd.wrapperView;cell.hzNativeAd.wrapperView addSubview: cell.wrapperView;

(您可能希望将wrapperView属性重命名为其他名称,以消除与Heyzap属性的歧义)。

prepareForReuse而言,您应该能够做到以下几点:

从Heyzap包装器视图中移除您自己的包装器视图:从视图层次结构中删除Heyzap包装器视图:[cell.hzNativeAd.wrapperView removeFromSuperview];

  • nil out your native ad reference:self.hzNativeAd = nil;.

  • Call self.hzNativeAd = nil;.

  • Call:[super prepareForReuse];

很抱歉对此的延迟响应。上周一是美国独立日,因此Heyzap的大多数员工都不在办公室。

如果您还有任何问题,请告诉我;如果需要,我可以与您进行Skype聊天。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38202393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档