study record

[iOS] iOS TextView 행간, 자간 조절하기 본문

iOS/iOS 정리

[iOS] iOS TextView 행간, 자간 조절하기

asong 2022. 3. 2. 15:42
// 먼저 행간 조절 스타일 설정
let style = NSMutableParagraphStyle()
style.lineSpacing = 10

let attributedString = NSMutableAttributedString(string: textView.text)

// 자간 조절 설정
attributedString.addAttribute(NSAttributedString.Key.kern, value: CGFloat(2.0), range: NSRange(location: 0, length: attributedString.length))

// 행간 스타일 추가
attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: style, range: NSRange(location: 0, length: attributedString.length))

// TextView에 세팅
textView.attributedText = attributedString

 

extension으로 정리한 버전

import Foundation
import UIKit

extension UITextView {
    func setLineAndLetterSpacing(_ text: String){
        let style = NSMutableParagraphStyle()
        // 행간 세팅
        style.lineSpacing = 5
        let attributedString = NSMutableAttributedString(string: text)
        // 자간 세팅
        attributedString.addAttribute(NSAttributedString.Key.kern, value: CGFloat(0), range: NSRange(location: 0, length: attributedString.length))
        attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: style, range: NSRange(location: 0, length: attributedString.length))
        self.attributedText = attributedString
    }
}

 

NSAtributedString

string과 연관된 속성들(시각적 스타일, 하이퍼링크, 데이터 접근성 등)

NSAttributedString 객체는 문자열을 관리하고 연관된 속성들(문자 하나 그리고 문자열 안의 문자들과 관련된 속성들)을 관리한다. 

 

NSMutableParagraphStyle

NSParagraphStyle을 상속 받아서 메소드들이 더해진 클래스이다. paragraph style 속성 값들을 바꾸는데 사용된다.

속성을 추가하고나서 paragraph style을 변경하면 안 된다. 변경하게 되면 앱에 크래시가 야기될 수 있다.