[iOS] UILabel 정리
by Roel DowneyUILabel
하나 이상의 읽기 전용 텍스트 행을 표시하는 보기 , 의도된 목적을 설명하기 위해 컨트롤과 함께 사용되는 경우가 많습니다.
- 개요 : 레이블 모양을 구성할 수 있으며, 레이블 내의 문자열도 사용자가 지정할 수 있습니다.
- 국제화 : 레이블은 많은 사용자와 통신할 수 있는 중요한 컨트롤 중 하나이므로 국제화가 중요합니다. 따라서 국제화 구현도 가능합니다. ( 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 | 강조 표시로 레이블을 그릴지 여부를 나타내는 부울 값 |
이름 | 내용 |
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 | 이 상수는 텍스트 정렬을 지정 |
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 로 지정합니다.
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
'iOS' 카테고리의 다른 글
[iOS] TableView 시작하기 (0) | 2019.09.08 |
---|---|
[iOS] UITabBarController 와 UITabBar 학습 (0) | 2019.08.28 |
[iOS] ViewController 상태변화 (0) | 2019.08.28 |
[iOS] Segue 정리 (0) | 2019.08.28 |
[iOS] CocoaPods 설치하고 Xcode 나의 프로젝트에 적용하기 (0) | 2019.08.28 |
블로그의 정보
What doing?
Roel Downey