본문 바로가기
iOS/설명

[iOS] UIFont의 property들

by Sky Titan 2022. 12. 31.
728x90
 

UIFont Explained Visually

I feel like UIFont’s read-only properties go forgotten easily. When you create a new font object, five measurement properties will be…

medium.com

UIFont의 property들

font size 18일 때의 property들의 값
출처: https://medium.com/@at_underscore/uifont-explained-visually-7de1a9c9f7a1

  • lineHeight: text line들의 높이
    • lineHeight = abs(ascender) + abs(decender)
  • acender: baseline을 기준으로 가장 높은 지점의 offset값
  • decender: baseline을 기준으로 가장 낮은 지점의 offset값
  • capHeight: 대문자 높이
  • xHeight: 소문자 "x"의 높이
  • leading: line간의 간격

 

lineHeight와 boundingRect를 이용하여 line number 구해보기

system font 18pt의 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

댓글