Swift/UILabel
[SWIFT]UILabel Extension 특정 단어만 컬러 및 폰트 변경
삽질중
2023. 5. 8. 16:45
import UIKit
extension UILabel {
func setLinespace(spacing: CGFloat) {
if let text = self.text {
let attributeString = NSMutableAttributedString(string: text)
let style = NSMutableParagraphStyle()
style.lineSpacing = spacing
attributeString.addAttribute(NSAttributedString.Key.paragraphStyle, value: style, range: NSMakeRange(0, attributeString.length))
self.attributedText = attributeString
}
}
/// Label 전체 텍스트에서 tagetString 색상만 변경
func asColor(targetString: String, color: UIColor) {
let fullText = text ?? ""
let attributedString = NSMutableAttributedString(string: fullText)
let range = (fullText as NSString).range(of: targetString)
attributedString.addAttribute(.foregroundColor, value: color, range: range)
attributedText = attributedString
}
/// Label 전체 텍스트에서 tagetString 폰트만 변경
func asFont(targetString: String, font: UIFont) {
let fullText = text ?? ""
let attributedString = NSMutableAttributedString(string: fullText)
let range = (fullText as NSString).range(of: targetString)
attributedString.addAttribute(.font, value: font, range: range)
attributedText = attributedString
}
/// Label 전체 텍스트에서 targetString 색상과 폰트 변경
func asFontColor(targetString: String, font: UIFont?, color: UIColor?) {
let fullText = text ?? ""
let attributedString = NSMutableAttributedString(string: fullText)
let range = (fullText as NSString).range(of: targetString)
attributedString.addAttributes([.font: font as Any, .foregroundColor: color as Any], range: range)
attributedText = attributedString
}
/// Label 전체 텍스트에서 tagetStringList 여러 텍스트 단어 색상과 폰트 변경
func asFontColor(targetStringList: [String], font: UIFont?, color: UIColor?) {
let fullText = text ?? ""
let attributedString = NSMutableAttributedString(string: fullText)
targetStringList.forEach {
let range = (fullText as NSString).range(of: $0)
attributedString.addAttributes([.font: font as Any, .foregroundColor: color as Any], range: range)
}
attributedText = attributedString
}
}
사용방법
/// 한문장(한단어) 컬러 색상을 변경시
func asContentTextColorRange(text: String, color: UIColor) {
self.contentLabel.asColor(targetString: text, color: color)
}
/// 여러 문장(단어) 컬러 색상을 변경시
func asContentTextColorRange(textlist: [String], color: UIColor) {
self.contentLabel.asFontColor(targetStringList: textlist, font: self.contentLabel.font, color: color)
}