Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 애니메이션
- SWIFT
- map
- uitableview
- UITextView
- MVVM
- swiftUI
- combine
- ribs
- Human interface guide
- tableView
- RxCocoa
- HIG
- uiscrollview
- Xcode
- rxswift
- ios
- 리펙터링
- UICollectionView
- 리팩토링
- Refactoring
- swift documentation
- Clean Code
- collectionview
- clean architecture
- Observable
- Protocol
- 리펙토링
- 클린 코드
- 스위프트
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] attributedText, NSMutableAttributedString (원하는 문자열 속성 지정, 문자열 attributedText 반환) 본문
iOS 응용 (swift)
[iOS - swift] attributedText, NSMutableAttributedString (원하는 문자열 속성 지정, 문자열 attributedText 반환)
jake-kim 2021. 3. 3. 23:16
변환형 - 특정 문자열을 입력하면 그 문자열만 bold로 바꾸는 방법
- UILabel extension으로 정의
extension UILabel {
func bold(targetString: String) {
let fontSize = self.font.pointSize
let font = UIFont.boldSystemFont(ofSize: fontSize)
let fullText = self.text ?? ""
let range = (fullText as NSString).range(of: targetString)
let attributedString = NSMutableAttributedString(string: fullText)
attributedString.addAttribute(.font, value: font, range: range)
self.attributedText = attributedString
}
}
- 테스트 (text는 이미 가지고 있으며, 특정 부분만 bold시키기)
- 현재 상태: UILabel.text = "문자열 실험 bold 굵은 부분 regular 문자열"
lbl.bold(targetString: "bold 굵은 부분")
반환형 - NSMutableAttributedString의 extension으로 정의
- Bold 체
import Foundation
import UIKit
extension NSMutableAttributedString {
func bold(string: String, fontSize: CGFloat) -> NSMutableAttributedString {
let font = UIFont.boldSystemFont(ofSize: fontSize)
let attributes: [NSAttributedString.Key: Any] = [.font: font]
self.append(NSAttributedString(string: string, attributes: attributes))
return self
}
}
- regular 체
extension NSMutableAttributedString {
func bold(string: String, fontSize: CGFloat) -> NSMutableAttributedString {
let font = UIFont.boldSystemFont(ofSize: fontSize)
let attributes: [NSAttributedString.Key: Any] = [.font: font]
self.append(NSAttributedString(string: string, attributes: attributes))
return self
}
func regular(string: String, fontSize: CGFloat) -> NSMutableAttributedString {
let font = UIFont.systemFont(ofSize: fontSize)
let attributes: [NSAttributedString.Key: Any] = [.font: font]
self.append(NSAttributedString(string: string, attributes: attributes))
return self
}
}
사용
- UILabel().attributedText 속성에 대입
@IBOutlet weak var lbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
lbl.attributedText = NSMutableAttributedString()
.regular(string: "문자열 실험", fontSize: 12)
.bold(string: " bold 굵은 부분 ", fontSize: 16)
.regular(string: "regular 문자열", fontSize: 12)
}
활용
- 배경 및 underline
- 정의
extension NSMutableAttributedString {
var fontSize: CGFloat {
return 14
}
var boldFont: UIFont {
return UIFont(name: "AvenirNext-Bold", size: fontSize) ?? UIFont.boldSystemFont(ofSize: fontSize)
}
var normalFont: UIFont {
return UIFont(name: "AvenirNext-Regular", size: fontSize) ?? UIFont.systemFont(ofSize: fontSize)
}
func bold(string: String, fontSize: CGFloat) -> NSMutableAttributedString {
let font = UIFont.boldSystemFont(ofSize: fontSize)
let attributes: [NSAttributedString.Key: Any] = [.font: font]
self.append(NSAttributedString(string: string, attributes: attributes))
return self
}
func regular(string: String, fontSize: CGFloat) -> NSMutableAttributedString {
let font = UIFont.systemFont(ofSize: fontSize)
let attributes: [NSAttributedString.Key: Any] = [.font: font]
self.append(NSAttributedString(string: string, attributes: attributes))
return self
}
func orangeHighlight(_ value:String) -> NSMutableAttributedString {
let attributes:[NSAttributedString.Key : Any] = [
.font: normalFont,
.foregroundColor: UIColor.white,
.backgroundColor: UIColor.orange
]
self.append(NSAttributedString(string: value, attributes:attributes))
return self
}
func blackHighlight(_ value:String) -> NSMutableAttributedString {
let attributes:[NSAttributedString.Key : Any] = [
.font: normalFont,
.foregroundColor: UIColor.white,
.backgroundColor: UIColor.black
]
self.append(NSAttributedString(string: value, attributes:attributes))
return self
}
func underlined(_ value:String) -> NSMutableAttributedString {
let attributes:[NSAttributedString.Key : Any] = [
.font: normalFont,
.underlineStyle : NSUnderlineStyle.single.rawValue
]
self.append(NSAttributedString(string: value, attributes:attributes))
return self
}
}
- 사용
@IBOutlet weak var lbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
lbl.attributedText = NSMutableAttributedString()
.regular(string: "문자열 실험", fontSize: 12)
.bold(string: " bold 굵은 부분 ", fontSize: 16)
.orangeHighlight("오렌지 ")
.blackHighlight("블랙")
.underlined("언더라인")
}
* 참고
stackoverflow.com/questions/28496093/making-text-bold-using-attributed-string-in-swift
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] mp4, gif 파일 재생 방법 (애니메이션, AVPlayer, Gifu 프레임워크) (0) | 2021.03.04 |
---|---|
[iOS - swift] font 편리하게 사용 방법 (enum) (0) | 2021.03.03 |
[iOS - swift] App Thinning, ODR, App Slicing, bitcode 개념 (0) | 2021.03.01 |
[iOS - swift] enum Equatable 비교 연산자 만드는 방법 (0) | 2021.02.23 |
[iOS - swift] 내부 크기에 따라 동적으로 width 길이가 증가하는 뷰 (0) | 2021.02.19 |
Comments