온보딩 화면에서 줄 간격, 일부분 볼드체 설정을 둘 다 해주어야 함
줄 간격을 먼저 설정하고 applyBoldToString을 이용하여 부분 볼드체를 적용하면서
이전에 설정한 줄 간격 attribute가 사라짐
기존 방식은 이전 attribute에 새로 어트리뷰트를 add 하는게 아니고 새로 초기화하는 방식이었기 때문
ex)
func applyBoldToString(targetString: String,
font: UIFont = .systemFont(ofSize: 10.0)) {
let originText = self.text ?? ""
let range = (originText as NSString).range(of: targetString)
let attributedString = NSMutableAttributedString(string: originText)
attributedString.addAttribute(.font, value: font, range: range)
self.attributedText = attributedString
}
originText
로 새로운 AttributedString
을 생성하고 add 해주어 기존 attribute 유지되지 않음
func applyBoldToString(targetString: String,
font: UIFont = .systemFont(ofSize: 10.0)) {
let originText = self.text ?? ""
let range = (originText as NSString).range(of: targetString)
var attributedString = NSMutableAttributedString(string: originText)
if let attributedText {
attributedString = NSMutableAttributedString(attributedString: attributedText)
}
attributedString.addAttribute(.font, value: font, range: range)
self.attributedText = attributedString
}
attributedText
가 존재하는 경우, 즉 텍스트에 이전에 설정된 attribute
가 있는 경우
attributedText
로부터 NSMutableAttributedString
을 생성하여 이전 어트리뷰트가 적용된 AttributedString
을 불러오고
거기에 새로운 어트리뷰트를 추가하여 문제 해결