Roel Notebook

[iOS] UILabel 정리

by Roel Downey

iOS

728x90
반응형

UILabel

하나 이상의 읽기 전용 텍스트 행을 표시하는 보기 , 의도된 목적을 설명하기 위해 컨트롤과 함께 사용되는 경우가 많습니다.

  • 개요 : 레이블 모양을 구성할 수 있으며, 레이블 내의 문자열도 사용자가 지정할 수 있습니다.
  • 국제화 : 레이블은 많은 사용자와 통신할 수 있는 중요한 컨트롤 중 하나이므로 국제화가 중요합니다. 따라서 국제화 구현도 가능합니다. ( URL 참조 ) About Internationalization and Localization

Topics


Accessing the Text Attributes (텍스트 속성 엑세스)

이름 내용
var text: String? 레이블에 표시되는 텍스트
var attributedText: NSAttributedString? 레이블로 표시되는 현재 스타일 텍스트
var font: UIFont! 텍스트를 표시하는데 사용되는 글꼴
var textColor: UIColor! 텍스트 색상
var textAlignment: NSTextAlignment 텍스트를 정렬하는데 사용하는 기술
var lineBreakMode: NSLineBreakMode 레이블의 텍스트를 줄바꿈하고 자르는데 사용하는 기술
var isEnabled: Bool 레이블의 텍스트를 그릴 때 사용할 활성화 상태

Sizing the Label's Text (레이블 텍스트 크기 조정)

이름 내용
var adjustsFontSizeToFitWidth: Bool 제목 문자열을 레이블의 경계 사각형에 맞추기 위해 글꼴 크기를 줄여야 하는지 여부를 나타내는 부울 값
var allowDefaultTighteningForTruncation: Bool 레이블을 잘라내기 전에 텍스트를 고정하는지 여부를 나타내는 부울 값
var baselineAdjustment: UIBaselineAdjustment 레이블에 맞게 텍스트를 축소해야 할 때 텍스트 기준선이 조정되는 방식을 제어
var minimumScaleFactor: CGFloat 라벨의 텍스트에 지원되는 최소 축척 비율
var numberOfLines: Int 텍스트 렌더링에 사용할 최대 줄 수

Managing Highlight Values (하이라이트 값 관리)

이름 내용
var highlightedTextColor: UIColor? 레이블의 텍스트에 적용된 강조 표시 색상
var isHighlighted: Bool 강조 표시로 레이블을 그릴지 여부를 나타내는 부울 값

Drawing a Shadow (그림자 그리기)

이름 내용
var shadowColor: UIColor? 텍스트의 그림자 색상
var shadowOffset: CGSize 텍스트의 그림자 오프셋(점 단위로 측정)

Drawing and Positioning Overrides (중첩 그리기 및 배치)

이름 내용
func textRect(forBounds: CGRect, limitedToNumberOfLines: Int) -> CGRect 레이블의 텍스트에 대한 직사각형을 반환
var drawText(in: CGRect) 지정된 사각형에 레이블의 텍스트(또는 그림자)를 그립니다.

Getting the Layout Constraints (레이아웃 제약 조건 가져오기)

이름 내용
var preferredMaxLayoutWidth: CGFloat 다중 행 레이블의 기본 최대 너비(점)

Setting and Getting Attributes (특성 설정 및 가져오기)

이름 내용
var isUserInteractionEnabled: Bool 사용자 이벤트를 무시하고 이벤트 대기열에서 제거할지 여부를 결정하는 부울 값

Related Types (관련유형)

이름 내용
enum NSTextAlignment 이 상수는 텍스트 정렬을 지정

 

NSMutableAttributedString & NSAttributedString 차이

: NSMutableAttributedString 은 변경 가능한 문자열 객체로써 append 등 가능 , NSAttributedString 는 변경 못함

 

순환참조

  • strong : Defalut 로써 아무것도 명시하지 않으면 설정되며 강한참조라고도 합니다.
  • weak : 약한참조 이며 옵셔널입니다.
  • unowned : weak 와 동일한 약한참조 이지만 옵셔널이 아닙니다.

클래스의 메모리와 관련된 용어들이며 Swift 는 자동으로 메모리 관리를 해줍니다. 따라서, ARC(Automatic Reference Counting) 라는 용어 아래 많은 관련 용어들이 있지만 그 중 기본적으로 strong , weak , unowned 용어가 있습니다.

레퍼런스 카운팅을 계산하여 메모리를 해제하는 여부를 결정하는데 사용되는 것들이며 strong 을 잘못쓰게 되면 영원히 메모리상에서 지울 수 없는 인스턴스가 존재하게 되며 이를 보완하기 위해 weak 와 unowned 을 사용합니다.

weak 는 옵셔널이기 때문에 참조하는 값이 없다면 nil 로 값이 설정되지만

unowned은 항상 값이 있다는 것을 전제로 하기 때문에 참조값이 없는 경우에는 크러시가 발생하게 될 것입니다.

 

 

UILabel 다른 폰트로 두 줄로 출력하기 (NSAttributedString 사용하기)

 

요구사항 : 타이틀은 Label : System font 20 본문은 Label : System font 12

  • NSAttributedString을 이용해서 하나의 UILabel 로 표현 해보자.
  1. 인터페이스 빌더 이용하기

- Label 의 Text 타입을 Plain -> Attributed 로 변경합니다.

- 'Title' 텍스트는 20.0 size font 로 , '본문' 은 12 size font 로 지정합니다.

 

    2. 코드로 구현하기

 

let titleString = NSAttributedString(string: "Title", attributes: [.font : UIFont.systemFont(ofSize: 20)]) 
let bodyString = NSAttributedString(string: "\n* 본문", attributes: [.font : UIFont.systemFont(ofSize: 12)]) 
let attrString = NSMutableAttributedString() 

attrString.append(titleString) 
attrString.append(bodyString) 
titleLabel.attributedText = attrString

 

 

참고

728x90
반응형

블로그의 정보

What doing?

Roel Downey

활동하기