UILabel 정리

[iOS] UILabel 정리

포토프레임(사진액자 앱)을 공부하면서 정리

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 사용자 이벤트를 무시하고 이벤트 대기열에서 제거할지 여부를 결정하는 부울 값

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

Instance Properties (인스턴스 특성) - Beta
이름 내용
var enablesMarqueeWhenAncestorFocused: Bool -

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 로 지정합니다.

  1. 코드로 구현하기

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

참고

Written on March 12, 2019