텍스트를 화면에 표시할 때 우리는 종종 텍스트의 양을 어떻게 제한할지, 텍스트 줄 바꿈을 어떻게 할지 결정해야 합니다. 이러한 결정은 텍스트를 표시하는 뷰의 'lineBreakMode'와 'numberOfLines'라는 두 가지 속성을 통해 이루어집니다. 이 속성들은 UILabel 뿐만 아니라 다른 UIKit 클래스에서도 사용됩니다. 오늘은 이 두 속성에 대해 알아보려고 합니다.
lineBreakMode와 numberOfLines란 무엇인가요?
'lineBreakMode'는 텍스트 줄 바꿈 방식을 결정하는 속성입니다. 이는 NSLineBreakMode 타입이며, 주요한 옵션들은 .byWordWrapping, .byCharWrapping, .byClipping, .byTruncatingHead, .byTruncatingMiddle, .byTruncatingTail 등이 있습니다.
'numberOfLines'는 뷰가 표시할 텍스트 줄 수를 결정하는 속성입니다. 이는 Int 타입이며, 0으로 설정하면 뷰는 텍스트의 모든 줄을 표시합니다. 그 외에 특정 숫자로 설정하면 뷰는 해당 줄 수로 텍스트를 표시합니다. 만약 텍스트가 더 많은 줄을 필요로 하더라도, 설정된 줄 수를 넘어가서는 표시하지 않습니다.
lineBreakMode 상세 설명
NSLineBreakMode에는 다양한 설정 옵션이 있습니다. 각 옵션은 라벨의 너비를 초과하는 텍스트를 어떻게 처리할지를 결정합니다.
- .byWordWrapping: 이 옵션은 라벨의 너비를 초과하는 텍스트를 다음 줄로 넘깁니다. 단어가 통째로 다음 줄로 넘어가므로, 단어가 잘리는 것을 방지할 수 있습니다. 이 옵션은 'numberOfLines' 설정에 따라 더 많은 줄로 텍스트를 넘길 수 있습니다.
- .byCharWrapping: 이 옵션은 라벨의 너비를 초과하는 텍스트를 다음 줄로 넘깁니다. 이 경우, 단어가 아니라 글자 단위로 줄바꿈이 이루어집니다. 즉, 단어 중간에서 줄바꿈이 일어날 수 있습니다.
- .byClipping: 이 옵션은 라벨의 너비를 초과하는 텍스트를 잘라냅니다. 즉, 초과하는 텍스트는 표시되지 않습니다.
- .byTruncatingHead: 이 옵션은 라벨의 너비를 초과하는 텍스트를 '...'로 대체합니다. 이 때, '...'는 텍스트의 처음 부분에 위치합니다. 즉, 텍스트의 마지막 부분만 보여줍니다.
- .byTruncatingMiddle: 이 옵션은 라벨의 너비를 초과하는 텍스트를 '...'로 대체합니다. 이 때, '...'는 텍스트의 중간 부분에 위치합니다. 즉, 텍스트의 처음과 마지막 부분을 보여주고, 중간은 생략합니다.
- .byTruncatingTail: 이 옵션은 라벨의 너비를 초과하는 텍스트를 '...'로 대체합니다. 이 때, '...'는 텍스트의 마지막 부분에 위치합니다. 즉, 텍스트의 처음 부분만 보여줍니다.
코드 예제
// UILabel 생성
let label = UILabel()
label.frame = CGRect(x: 0, y: 0, width: 200, height: 50)
label.backgroundColor = .lightGray
// 텍스트 설정
label.text = "안녕하세요. Swift에서 텍스트를 다루는 방법을 배우고 있습니다. 잘 따라오고 계신가요?"
// lineBreakMode 설정
label.lineBreakMode = .byCharWrapping // 글자 단위로 줄바꿈
// numberOfLines 설정
label.numberOfLines = 3 // 텍스트 표시 줄 수를 3으로 제한
이처럼, 'lineBreakMode'와 'numberOfLines' 속성을 이해하고 적절히 활용하면 다양한 텍스트 표시 요구 사항을 충족시킬 수 있습니다.
이것으로 "텍스트 표시 방법을 결정하는 lineBreakMode와 numberOfLines 이해하기"에 대한 포스팅을 마치겠습니다. 질문이나 의견이 있다면 아래 댓글로 남겨주세요. 감사합니다!
'Swift' 카테고리의 다른 글
[Swift] 뷰 레이아웃의 업데이트 (0) | 2023.06.22 |
---|---|
[Swift] clipsToBounds를 사용하여 뷰 경계 넘어가는 서브뷰를 제어하는 방법 (0) | 2023.06.21 |
[Swift] UILabel에 패딩 주는 법 (0) | 2023.06.20 |
[Swift]UIView의 masksToBounds 이해하기 (0) | 2023.06.19 |
[Swift]오토레이아웃을 이용한 마진 설정 (0) | 2023.06.19 |