NSAttributedString 사용하기: 텍스트 스타일링 강화

작성일 :

NSAttributedString 사용하기: 텍스트 스타일링 강화

Swift를 사용하여 멋진 iOS 애플리케이션을 만들 때, 텍스트를 단순한 문자열로만 사용하는 경우가 있습니다. 그러나 NSAttributedString을 활용하면 더 다채롭고 사용자 친화적인 텍스트 스타일링이 가능합니다. 이 글에서는 NSAttributedString을 사용하여 텍스트의 색상, 폰트, 크기 등을 설정하고, 더욱 매력적인 사용자 인터페이스를 구성하는 방법을 다룹니다.

NSAttributedString 기본 개념

NSAttributedString은 텍스트에 다양한 속성을 부여할 수 있는 클래스입니다. 이 클래스는 다음과 같은 속성들을 포함할 수 있습니다:

  • 폰트(Font): 텍스트의 글꼴과 크기
  • 색상(Color): 텍스트의 색상
  • 여백(Kerning): 문자 간의 간격
  • 스타일(Paragraph Style): 텍스트 정렬 및 줄 간격 등

기본 NSAttributedString은 불변 객체(immutable object)인데, 이는 한 번 생성되면 변경할 수 없음을 의미합니다. 변형이 가능한 객체는 NSMutableAttributedString을 사용해야 합니다.

NSAttributedString 생성하기

다음은 텍스트에 다양한 속성을 적용하여 NSAttributedString을 만드는 예제입니다.

swift
let text = "Hello, NSAttributedString!"
let attributes: [NSAttributedString.Key: Any] = [
    .font: UIFont.systemFont(ofSize: 18),
    .foregroundColor: UIColor.blue,
    .kern: 1.5
]
let attributedString = NSAttributedString(string: text, attributes: attributes)

이 코드에서는 문자열 "Hello, NSAttributedString!"에 대해 세 가지 속성을 설정했습니다: 폰트 크기는 18, 텍스트 색상은 파란색, 그리고 문자 간 간격(kern)은 1.5입니다.

NSMutableAttributedString 활용하기

앞서 설명한 것처럼 NSMutableAttributedString은 변형이 가능합니다. 이를 활용하면 동일한 문자열의 서로 다른 부분에 다양한 속성을 적용할 수 있습니다.

swift
let mutableAttributedString = NSMutableAttributedString(string: "Hello, NSAttributedString!")

// 'Hello' 부분 스타일링
mutableAttributedString.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: 24), range: NSRange(location: 0, length: 5))
mutableAttributedString.addAttribute(.foregroundColor, value: UIColor.red, range: NSRange(location: 0, length: 5))

// 나머지 부분 스타일링
mutableAttributedString.addAttribute(.font, value: UIFont.systemFont(ofSize: 18), range: NSRange(location: 7, length: 18))
mutableAttributedString.addAttribute(.foregroundColor, value: UIColor.blue, range: NSRange(location: 7, length: 18))

이 예제에서는 문자열의 첫 번째 단어 "Hello"에 대해 굵은(bold) 글꼴과 빨간색을 설정하였고, 나머지 텍스트는 일반 글꼴과 파란색을 설정하였습니다.

NSAttributedString을 UILabel에 적용하기

NSAttributedStringUILabel과 함께 사용하는 방법을 알아보겠습니다. 일반 UILabeltext 속성 대신 attributedText 속성을 사용하면 됩니다.

swift
let label = UILabel()
label.attributedText = attributedString

앞서 만든 attributedStringUILabelattributedText로 설정하여, 스타일링된 텍스트를 표시할 수 있습니다.

다양한 속성 추가하기

NSAttributedString을 통해 적용할 수 있는 다양한 속성을 몇 가지 더 살펴보겠습니다.

배경색(Background Color)

swift
let backgroundColorAttribute: [NSAttributedString.Key: Any] = [
    .backgroundColor: UIColor.yellow
]
attributedString.addAttributes(backgroundColorAttribute, range: NSRange(location: 0, length: 5))

밑줄(Underline)

swift
let underlineAttribute: [NSAttributedString.Key: Any] = [
    .underlineStyle: NSUnderlineStyle.single.rawValue
]
attributedString.addAttributes(underlineAttribute, range: NSRange(location: 7, length: 18))

텍스트 강조(Stylizing Text)

swift
let shadow = NSShadow()
shadow.shadowColor = UIColor.gray
shadow.shadowOffset = CGSize(width: 1, height: 1)
let shadowAttribute: [NSAttributedString.Key: Any] = [
    .shadow: shadow
]
attributedString.addAttributes(shadowAttribute, range: NSRange(location: 0, length: 25))

이처럼 다양한 속성을 활용하여 텍스트를 보다 매력적으로 꾸밀 수 있습니다.

마무리

Swift에서 NSAttributedString을 사용하면 텍스트 스타일링을 강화하여 사용자 인터페이스를 개선할 수 있습니다. NSAttributedStringNSMutableAttributedString 클래스는 많은 속성을 지원하여, 여러 가지 디자인 요구 사항에 맞게 텍스트를 자유롭게 꾸밀 수 있습니다. 오늘 다룬 기법들을 활용하여 여러분의 iOS 애플리케이션을 더욱 돋보이게 만들어 보세요.