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
- swiftUI
- UICollectionView
- combine
- SWIFT
- tableView
- collectionview
- 애니메이션
- swift documentation
- 리펙터링
- Protocol
- 클린 코드
- 스위프트
- UITextView
- rxswift
- Clean Code
- RxCocoa
- uiscrollview
- uitableview
- HIG
- ribs
- 리팩토링
- 리펙토링
- ios
- Refactoring
- clean architecture
- Human interface guide
- Observable
- MVVM
- Xcode
- map
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] UILabel 라인 간 간격 (spacing, 간격, NSMutableAttributedString, ) 본문
iOS 응용 (swift)
[iOS - swift] UILabel 라인 간 간격 (spacing, 간격, NSMutableAttributedString, )
jake-kim 2021. 10. 23. 03:18
기본 개념
- NSMutableAttributedString
- 텍스트 + 속성값을 가지고 있는 인스턴스
- 속성값: 텍스트 색상, 폰트, 하이퍼링크 등
- NSMutableParagraphStyle
- 텍스트에 속성을 주입할 수 있는 인스턴스
UILabel에 간격 부여 방법
extension UILabel {
func setLineSpacing(spacing: CGFloat) {
}
}
- text를 생성자로 주입하여 NSMutableAttributedString 인스턴스를 생성
guard let text = text else { return }
let attributeString = NSMutableAttributedString(string: text)
- NSMutableParagraphStyle 인스턴스에 속성을 추가하고 이 인스턴스에 속성을 부여한 후, NSMutableAttributedString에 적용
style.lineSpacing = spacing
attributeString.addAttribute(.paragraphStyle,
value: style,
range: NSRange(location: 0, length: attributeString.length))
- UILabel 자체적으로 가지고 있는 attributedText 프로퍼티에 대입
attributedText = attributeString
- extension 전체 코드
extension UILabel {
func setLineSpacing(spacing: CGFloat) {
guard let text = text else { return }
let attributeString = NSMutableAttributedString(string: text)
let style = NSMutableParagraphStyle()
style.lineSpacing = spacing
attributeString.addAttribute(.paragraphStyle,
value: style,
range: NSRange(location: 0, length: attributeString.length))
attributedText = attributeString
}
}
* 이 밖에도 NSMutableParagraphStyle에 아래와 같은 프로퍼티 속성 존재
사용하는 쪽 코드
class ViewController: UIViewController {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
label1.numberOfLines = 0
label2.numberOfLines = 0
label1.text = "iOS 앱 개발 알아가기 1\n라인 간 간격 테스트\n예제 문구입니다.(간격 미적용)"
label2.text = "iOS 앱 개발 알아가기 2\n라인 간 간격 테스트\n예제 문구입니다.(간격 적용)"
label2.setLineSpacing(spacing: 15.0)
}
}
* 참고
- NSMutableAttributedString: https://developer.apple.com/documentation/foundation/nsmutableattributedstring
- NSMutableParagraphStyle: https://developer.apple.com/documentation/uikit/nsmutableparagraphstyle
'iOS 응용 (swift)' 카테고리의 다른 글
Comments