Skip to content

Commit

Permalink
[Feat] #319 - text에 따라 UILabel 줄바꿈이 몇 번 될지 알려주는 함수 구현
Browse files Browse the repository at this point in the history
UILabel+에 추가함
  • Loading branch information
EunsuSeo01 committed Dec 29, 2024
1 parent 1bbbe3f commit 7b9f492
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions Hankkijogbo/Hankkijogbo/Global/Extensions/UILabel+.swift
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,26 @@ extension UILabel {
formatter.numberStyle = .decimal
self.text = (formatter.string(from: NSNumber(value: price)) ?? "\(price)") + StringLiterals.Common.won
}

/// 텍스트 양에 따른 Label의 줄바꿈이 몇 번 될지 알려주는 함수
/// - maxWidth : label이 차지하게 되는 최대 width
func calculateNumberOfLines(maxWidth: CGFloat) -> Int {
guard let text = text, let font = font else { return 0 }

// UILabel의 텍스트와 폰트로 텍스트가 차지하는 전체 높이 계산
let textAttributes: [NSAttributedString.Key: Any] = [.font: font]
let size = CGSize(width: maxWidth, height: CGFloat.greatestFiniteMagnitude)
let boundingBox = NSString(string: text).boundingRect(
with: size,
options: .usesLineFragmentOrigin,
attributes: textAttributes,
context: nil
)

// 한 줄이 차지하는 높이
let singleLineHeight = font.lineHeight

// 전체 텍스트 높이를 한 줄 높이로 나눈 값을 줄 수로 리턴
return Int(ceil(boundingBox.height / singleLineHeight))
}
}

0 comments on commit 7b9f492

Please sign in to comment.