https://developer.apple.com/documentation/uikit/uilabel
"A view that displays one or more lines of informational text"
하나 혹은 하나 이상의 라인으로 정보를 담는 텍스트를 표시하는 뷰입니다.
class UILabel : UIView
레이블의 텍스트 전체 모습을 설정할 수 있고, 텍스트 내에 서브스트링의 모습을 커스텀 형태로 만들기 위해 속성을 갖는 스트링을 사용할 수도 있습니다. 인터페이스에서 코드로 레이블을 추가하거나 커스텀 형태로 만들 수 있습니다. 혹은 인터페이스 빌더에 있는 특성 인스펙터를 통해 추가할 수도 있습니다.
인터페이스에 레이블을 추가하기 위해 아래 단계를 거칠 수 있습니다.
내용을 나타내는 스트링 혹은 속성을 갖는 스트링을 제공합니다.
속성을 갖지 않는 스트링을 사용하면, 레이블의 나타나는 모습을 설정해야 합니다.
인터페이스에서 크기와 위치를 결정할 수 있도록 오토 레이아웃 규칙에 따라 오토 레이아웃을 설정합니다.
접근성 정보와 지역화된 스트링을 제공해야 합니다.
텍스트 속성에 NSString
객체를 하당하거나 attributedText
속성에 NSAttributedString
객체를 할당하는 것을 통해 내용을 담는 레이블을 제공할 수 있습니다. 레이블은 가장 최근에 설정한 속성을 표시합니다.
attributedText
속성은 NSAttributedString
API를 이용해 한 글자, 글자의 그룹이 나타내는 형태를 제어할 수 있도록 합니다. Figure 1은 스트링의 폰트, 색상, 정렬을 커스터마이징하기 위한 속성을 포함한 NSAttributedString
을 표시하는 레이블을 보여줍니다.
Figure 1 Label displaying an attributed string
레이블의 텍스트 형식을 uniform fashion으로 만들고 싶다면, 내용을 포함하는 NSString
객체에 텍스트 속성을 설정하고, 폰트, 텍스트 색상, 텍스트정렬, lineBreakMode 속성을 설정하면 됩니다. Figure 2는 커스텀 폰트, 색상, 정렬을 속성을 갖추고 있는 NSString
을 표시하는 레이블입니다.
Figure 2 Label displaying an unattributed string
attributedText
속성의 내용을 표시하는 레이블에 나타는 모습의 속성을 설정하면, 레이블은 적합한 속성에 오버라이드하고 uniform으로 나타나는 모습으로 속성이 적용된 스트링을 표시합니다. Figure 3은 Figure 1로부터 textColo
속성을 초록색으로 설정한 레이블을 보여줍니다.
Figure 3 Label displaying an attributed string, with overridden text color
numberOfLines
속성을 사용해 테스트 배치 시 레이블에 대한 최대 줄 수를 구체화해야 합니다. 값을 0으로 두면 레이블의 넓이 내에서 텍스트를 배치하는 데 필요한 만큼의 줄을 보여줍니다. lineBreakMode
속성을 사용해 텍스트 내 여러 줄을 레이블이 어떻게 나눌 것인지 제어할 수 있고, 마지막 줄과 관련해 어떻게 자를 것인지를 제어할 수 있습니다.
오토 레이아웃을 사용해 배치시키고 선택적으로 레이블의 크기를 조절할 수 있습니다. 레이블의 컨텐트 크기는 기본값으로 내용의 전체를 한 줄에 표시하는 크기로 설정합니다. 만약 오토 레이아웃 제약으로 레이블의 넓이는 결정하되 높이는 결정하지 않는다면, 레이블의 기본적인 컨텐트 크기는 텍스트를 완전히 보여주기 위한 높이로 적용합니다.
외부적으로 레이블이 완전하게 결정된 크기를 갖고 있을 때, bounds 내에서 내용이 맞춰지지 않는 상황을 어떻게 다룰 것인지 구체화해야 합니다. 폰트 사이즈를 줄이기 위해서 adjustsFontSizeToFitWidth
속성을 true
로 설정할 수 있고, minimumScaleFactor
속성을 0에서 1 사이 값으로 설정할 수 있습니다. 후자는 요구한 폰트 사이즈보다 얼마나 작게 크기를 조정할지 나타냅니다. allowsDefaultTighteningForTruncation
속성을 true
로 설정하는 것은 스트링을 잘라내기 전에 글자들 사이 간격을 줄이도록 합니다. Figure 4는 글자가 넘쳐나려고 할 때도 전체 스트링의 내용을 표시할 수 있도록, minimumScaleFactor
, adjustsFontSizeToFitWidth
를 사용하는 레이블을 보여줍니다.
Figure 4 Automatic font size adjustment
레이블은 사용자에게 가치있는 정보를 제공합니다. 많은 사람들에게 정보를 전달할 수 있도록, 텍스트를 국제화하고 접근성을 지원합니다. 구현에 관해 더 많은 정보가 필요하다면 아래 링크(Internationalization)를 살펴보시기 바랍니다. 레이블은 기본값으로 보이스오버에 접근 가능합니다. 레이블에서 기본값 접근성 특성들은 Static Text
와 User Interaction Enabled
입니다. 보이스오버를 앱에서 지원하는 것과 관련한 내용은 아래 링크(Supporting VoiceOver)에서 살펴보시기 바랍니다. 동적 타입을 지원하기 위해 텍스트 스타일을 사용하는 것에 대해서 알아보려면 아래 링크(Scaling Fonts Automatically)를 살펴보시기 바랍니다.
디자인 가이드에 대해서 알아보려면 아래 링크(Human Interface Guidelines)에서 살펴보시기 바랍니다.
Internationalization
https://developer.apple.com/localization/
Supporting VoiceOver
https://developer.apple.com/documentation/accessibility/supporting_voiceover_in_your_app
Scaling Fonts Automatically
https://developer.apple.com/documentation/uikit/uifont/scaling_fonts_automatically
Human Interface Guidelines
https://developer.apple.com/design/human-interface-guidelines/ios/controls/labels/
인터페이스에서 편집 가능한 텍스트 영역을 표시하는 객체입니다.
https://developer.apple.com/documentation/uikit/uitextfield
https://velog.io/@panther222128/UITextField
스크롤 가능한 다중 라인의 텍스트 영역입니다.
https://developer.apple.com/documentation/uikit/uitextview
https://velog.io/@panther222128/UITextView
텍스트 뷰에 표준 드래그 앤 드롭 지원을 확장해서 컨텐트의 커스텀 타입을 포함하도록 합니다.
https://developer.apple.com/documentation/uikit/views_and_controls/drag_and_drop_customization
https://velog.io/@panther222128/Drag-and-Drop-Customization