728x90
UIFont의 property들
- lineHeight: text line들의 높이
- lineHeight = abs(ascender) + abs(decender)
- acender: baseline을 기준으로 가장 높은 지점의 offset값
- decender: baseline을 기준으로 가장 낮은 지점의 offset값
- capHeight: 대문자 높이
- xHeight: 소문자 "x"의 높이
- leading: line간의 간격
lineHeight와 boundingRect를 이용하여 line number 구해보기
요약은 아래와 같다.
- boundingRect로 label의 height 구하기 (ceil 잊지말기!!)
- label의 height / lineHeight하고 floor함수로 소수점을 버리고 label안에 최대로 들어갈 수 있는 줄의 숫자 구하기
let font = UIFont.systemFont(ofSize: 18)
let test: NSString = NSString(string: "sjldansljdnalsjndlajsndljansjldnasljdnajlsndjlasndlaS")
let rect = test.boundingRect(with: CGSize(width: 50, height: 150), options: [.usesLineFragmentOrigin], attributes: [.font: font], context: nil)
let height = ceil(rect.height)
let lineNumber = floor(height / font.lineHeight)
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] CALayer.shouldRasterize (0) | 2023.01.01 |
---|---|
[iOS] 앱의 샌드박스 구조 (0) | 2022.12.31 |
[iOS] OOM (Out of Memory) crash case - 1 (0) | 2022.11.26 |
[iOS] CAShapeLayer lineDashPattern (점선) 만들기 (0) | 2022.11.26 |
[iOS] NSAttributedString.boundingRect (0) | 2022.11.26 |
댓글