Spannable Label
GFPSpannableOption
특정 Assets의 Spannable 스타일 적용이 필요한 경우가 있습니다.
info
현재 LabelOption이 제공되는 Assets은 3가지 (Body, CTA, Advertiser) 로, 추후 늘어날 가능성이 있습니다. 해당 기능은 GFPSDK 7.9.0 이상부터 제공됩니다.
LabelOption 하위의 GFPSpannableOption은 spannableOption Nullable Property로 적용됩니다.
GFPSpannableOption의 Property는 다음과 같습니다.
/**
* 강조 Text 시작 위치 - 시작 Position은 1입니다.
*/
public let startPos:Int
/**
* 강조 Text 끝 위치
*/
public let endPops:Int
/**
* 볼드 여부
*/
public let isBold:Bool
/**
* 변경 Text Color
*/
public let textColor: UIColor?
매체에서는 Spannable Option의 존재 여부에 따라서 애셋 셋팅을 변경해주시면 됩니다. 다음은 Advertise의 spannable 적용 예시입니다.
- Swift
- Objective-C
if let advertiserOption = nativeAd.advertiserOption {
let attributedString = NSMutableAttributedString(string: nativeAd.advertiser)
for spannable in advertiserOption.spnnableOption {
let startIndex = spannable.startPos
let endIndex = spannable.endPos
let attributedRange = NSRange(location: startIndex, length: endIndex - startIndex)
if let textColor = spannable.textColor {
attributedString.addAttribute(.foregroundColor, value: textColor, range: attributedRange)
}
if spannable.isBold {
attributedString.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: UIFont.systemFontSize), range: attributedRange)
}
}
adView.advertiserLabel.attributedText = attributedString
}
if(nativeAd.advertiserOption != nil) {
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:nativeAd.advertiser];
for (GFPSpannableOption *spannable in nativeAd.advertiserOption.spnnableOption) {
NSUInteger startIndex = spannable.startPos;
NSUInteger endIndex = spannable.endPos;
NSRange attributedRange = NSMakeRange(startIndex, endIndex - startIndex);
if(spannable.textColor != nil) {
[attributedString addAttribute:NSForegroundColorAttributeName
value:spannable.textColor
range:attributedRange];
}
if(spannable.isBold) {
[attributedString addAttribute:NSFontAttributeName
value:[UIFont boldSystemFontOfSize:[UIFont systemFontSize]]
range:attributedRange];
}
}
adView.advertiserLabel.attributedText = attributedString;
}