-
(iOS) UILabel 코드로 생성 및 기본 설정Programing Language/iOS(Swift) 2019. 11. 1. 14:29728x90반응형
1. UILabel 코드로 생성하기.
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 80, height: 40)) self.view.addSubview(label)
2. UILabel 정렬하기.
label.textAlignment = .left // 좌측 정렬. label.textAlignment = .center // 중앙 정렬. label.textAlignment = .right // 우측 정렬. label.textAlignment = .justified // 행맞추기 (Justification) label.textAlignment = .natural // 지역화 기준으로 정렬. (Alignment associated with the current localization)
- .justified 는 언뜻보기로 .left 와 차이가 없게 느껴지나, linebreak 설정에 의해 행이 바뀔 때 들쭉날쭉해지는 문단의 마지막 부분을 뷰 넓이에 맞춰서 글자간격을 조정하는 것을 확인할 수 있습니다. (Justified = 〔인쇄〕 〈활자의 행의〉 길이를 맞추다.)
- .natural 도 .left 와 비슷하게 느껴지나, 지역화가 아랍어인 경우 자동으로 .right 정렬 되도록 합니다. (iOS 6.0+)
BaseLine20pt 폰트, 10pt 폰트 서로 다른 폰트 크기의 UILabel 들을 정렬할 때, 기준이 모호해집니다.
그렇다고 뷰 기준으로 중앙정렬을 할 경우 폰트의 크기에 의해 뷰의 높이가 서로 다르므로 큰 글자는 행을 가득 채우고 작은 글자는 중앙에 작게 위치하게 됩니다.
결국 UILabel 들은 세로 가운데 정렬은 되었지만 출력되는 글자들은 위/아래로 들쭉날쭉하게 보이게 됩니다.
이때 사용되는 기준입니다. (BaseLine 정렬의 경우 AutoLayout 포스팅을 할 때 더 자세히 다루도록 하겠습니다.)label.baselineAdjustment = .alignCenters // 글자가 View Bound 세로 기준으로 중앙 정렬됨. label.baselineAdjustment = .alignBaselines. // 글자의 아래부분(Baseline)이 정해진 위치 기준으로 정렬됨. (Autolayout 포스팅할 때 더 설명하도록 하겠습니다.) label.baselineAdjustment = .none // 글자가 View Bound 세로 기준으로 좌상단 정렬됨. (기본값)
- Baseline 의 경우 Dynamic Type 이나 Localization 을 지원하지 않는 경우 그 필요성을 느끼지 못할 수도 있습니다.
- 앱이 고도화되어 다양한 폰트와 언어를 지원할 때는 상당히 중요해지는 부분이라고 생각됩니다.
- 이 속성은 numberOfLines 값이 1인 경우에만 유효합니다.
3. 기타 옵션들
numberOfLines
Label 에서 출력가능한 line 수를 정합니다. 0 은 제한이 없음을 표시합니다. AttributedString 의 경우도 마찬가지로 적용이됩니다.
adjustsFontSizeToFitWidth
YES 로 설정한 경우, Label 의 bound 영역이 줄어들면 텍스트도 minimumScaleFactor 에 맞춰서 줄어듭니다.
allowsDefaultTighteningForTruncation
YES 로 설정한 경우, truncation 텍스트 자르기 가 발생하기 전에 최대한 글자 간격을 좁힙니다. font, 라인의 넓이, line break mode 등 정보에 기인하여 적정한 간격이 선정됩니다.
shadowColor, ShadowOffset
그림자 속성을 넣습니다.
isHighlighted, highlightedTextColor
하이라이트 된 경우와 그렇지 않은 경우에 대한 컬러 속성을 정할 수 있습니다.
출처: https://goodyoda.tistory.com/392 [GoodYoda's Story]
출처: https://goodyoda.tistory.com/392 [GoodYoda's Story]
출처: https://goodyoda.tistory.com/392 [GoodYoda's Story]728x90반응형'Programing Language > iOS(Swift)' 카테고리의 다른 글
(iOS) CollectionView와 http통신으로 데이터 넣을때 발생하는 문제 해결 (0) 2019.11.03 iOS) UIView에 터치 이벤트를 추가하는 방법? (0) 2019.11.01 (iOS) View에 View를 넣고 순서 변경하기(레이아웃 순서 변경) (0) 2019.11.01 (iOS)JSON Parsing편하게 하기(홈페이지 추천) (0) 2019.11.01 (iOS) CollectionView에서 column 크기 정확하게 쪼개기 (0) 2019.11.01