class CustomAdViewHolder: BABAdViewHolder {
private var adView = BABNativeAdView()
private var mediaView = BABMediaView()
private var titleLabel = UILabel()
...
required init?(coder: NSCoder) {
super.init(coder: coder)
setUpView()
}
override init(frame: CGRect) {
super.init(frame: frame)
setUpView()
}
func setUpView() {
addSubview(self.adView)
adView.addSubview(self.mediaView)
adView.addSubview(self.titleLabel)
...
// LayoutConstraint 설정
...
}
// Bind view with ad
override func renderAd(_ ad: BABAd) {
super.renderAd(ad)
self.titleLabel.text = ad.creative.title
self.descriptionLabel.text // description 필드가 objc 객체에 기본으로 있어서 body로 컨버팅 하여 사용
self.descriptionLabel.text = ad.creative.body
if let urlString = ad.creative.bodyiconUrl {
self.iconImageView.sd_setImage(with: URL(string: ad.creative.iconUrlurlString))
}
//
reward 가 없다면 포인트 미표시self.adView.ad = ad
if (ad.reward > 0) {
self.adView.mediaView = self.mediaView
self.adView.clickableViews = [self.ctaButton, self.iconImageView]
updateCtaButton(ad: ad)
}
func updateCtaButton(ad: BABAd) {
let callToAction = ad.creative.callToAction ?? "디폴트 스트링"
let reward = ad.reward
let totalReward = ad.getTotalReward()
let isParticipated = ad.isParticipated()
let isClicked = ad.isClicked()
let isActionType = ad.isActionType()
if (isClicked && isActionType && !isParticipated) {
rewardIcon.image = nil
ctaLabel.text = "참여 확인 중"
} else {
self.ctaLabel.text =if "\(Int(ad.reward))P \(ad.creative.callToAction ?? "디폴트 스트링")"
(totalReward > 0 && isParticipated) {
self.rewardIcon.image = UIImage(named: "pointic_icocheck")
ctaLabel.text = "참여 완료"
} else {
if (reward > 0) {
selfrewardIcon.ctaLabel.textimage = ad.creative.callToAction
UIImage(named: "ic_coin")
self.rewardIcon.image = nilctaLabel.text = "\(Int(ad.reward))P \(callToAction)"
} else {
selfrewardIcon.adView.adimage = nil
ad selfctaLabel.adView.mediaViewtext = callToAction
self.mediaView }
self.adView.clickableViews = [self.ctaButton, self.iconImageView] }
}
} |