我为我的iOS应用集成了MoPub广告,在我的UITableViewController中运行一些原生广告(实际上,它是PFQueryTableViewController,因为我使用Parse将数据加载到tableView中)。
一切运行正常 - 控制台显示广告正在成功加载,我可以在我的tableView中看到额外的单元格广告应该在哪里 - 问题是广告的所有内容都没有显示出来;我只看到一个空白单元格。
问题似乎不是来自MoPub。我想我的电池设置不正确,因为我无法在那里看到任何东西。
我尝试了两件事。
使用故事板设置单元格。我在我的UITableViewController中添加了一个新单元格,并为它创建了一个新类NativeAdCell
。我设计了IBOutlets并将它们连接到类文件。
内容通过MoPub函数加载,如下所示:
func layoutAdAssets(adObject: MPNativeAd!) {
adObject.loadIconIntoImageView(iconImageView)
adObject.loadTitleIntoLabel(titleLabel)
adObject.loadCallToActionTextIntoButton(callToActionButton)
adObject.loadImageIntoImageView(mainImageView)
adObject.loadTextIntoLabel(mainTextLabel)
}
应用程序在控制台输出(lldb)
的第一行崩溃。
以编程方式添加插座。在NativeAdCell
文件中,我添加了这样的插座:
var mainTextLabel = UILabel()
var titleLabel = UILabel()
var iconImageView = UIImageView()
var mainImageView = UIImageView()
var callToActionButton = UIButton()
然后设置他们的帧。
内容加载相同的MoPub函数。现在没有崩溃,但广告单元显示完全空白,没有内容。即使我手动设置mainTextLabel.text = "Please show up"
,也不会显示任何内容。
当我尝试加载IBOutlets时崩溃让我觉得我将NativeAdCell链接到tableView的方式有问题,但似乎MoPub SDK应该处理这个问题。
有人可以根据这些信息发现问题吗?
答案 0 :(得分:1)
我在没有IBOutlets的情况下实现了这个目标,但没有详细记录,所以我认为这可能会帮助那些希望将MoPub SDK与自定义单元格用于原生广告的人
//
// AdTableViewCell.swift
// Trending-News
//
// Created by Conor Griffin on 22/07/2015.
// Copyright (c) 2015 Conor Griffin. All rights reserved.
//
import UIKit
import MoPub
class AdTableViewCell: UITableViewCell, MPNativeAdRendering {
var iconImageView: UIImageView! = UIImageView()
var titleLabel: UILabel! = UILabel()
var mainTextLabel: UILabel! = UILabel()
var advertIndicator: CGSponsoredLinkLabel! = CGSponsoredLinkLabel()
var adCorner: CGCornerHighlight! = CGCornerHighlight()
static func sizeWithMaximumWidth(maximumWidth: CGFloat) -> CGSize {
return CGSize(width: maximumWidth, height: 100)
}
override func layoutSubviews() {
super.layoutSubviews()
let width = CGRectGetWidth(frame)
let cellFrame = CGRect(x: 0, y: 0, width: width, height: 100)
iconImageView.layer.borderColor = UIColor.grayColor().CGColor
iconImageView.layer.borderWidth = 1
iconImageView.frame = CGRectMake(10, 10, 80, 80)
contentView.addSubview(iconImageView)
titleLabel.frame = CGRectMake(100, 10, self.frame.width - 110, 25)
contentView.addSubview(titleLabel)
mainTextLabel.frame = CGRectMake(100, 35, self.frame.width - 110, self.frame.height - 65)
contentView.addSubview(mainTextLabel)
mainTextLabel.numberOfLines = 3
mainTextLabel.font = UIFont.systemFontOfSize(11.0)
advertIndicator.frame = CGRectMake(100, self.frame.height - 30, self.frame.width - 110, self.frame.height - 80)
contentView.addSubview(advertIndicator)
advertIndicator.font = UIFont.systemFontOfSize(10.0)
advertIndicator.text = "Advertisement"
advertIndicator.textColor = UIColor.darkGrayColor()
advertIndicator.backgroundColor = UIColor(red: 252/255.0, green: 246/255.0, blue: 220/255.0, alpha: 1.0)
advertIndicator.clipsToBounds = true
advertIndicator.layer.masksToBounds = true
advertIndicator.layer.cornerRadius = 3
}
func layoutAdAssets(adObject: MPNativeAd!) {
adObject.loadTitleIntoLabel(titleLabel)
adObject.loadTextIntoLabel(mainTextLabel)
adObject.loadIconIntoImageView(iconImageView)
}
}
答案 1 :(得分:0)
真的,我忘了将子视图添加到NativeAdCell的contentView中,这真是太神奇了。 self.contentView.addSubview(mainTextLabel)
等解决了#2。
还不确定如何让它与IBOutlets一起使用。这样会更容易(不需要编程约束)。