[iOS] UILabel 정리
포토프레임(사진액자 앱)을 공부하면서 정리
UILabel
하나 이상의 읽기 전용 텍스트 행을 표시하는 보기 , 의도된 목적을 설명하기 위해 컨트롤과 함께 사용되는 경우가 많습니다.
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 로 표현 해보자.
- 인터페이스 빌더 이용하기
- Label 의 Text 타입을 Plain -> Attributed 로 변경합니다.
- ‘Title’ 텍스트는 20.0 size font 로 , ‘본문’ 은 12 size font 로 지정합니다.
- 코드로 구현하기
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
참고