반응형
[Swift/TIL #19] 2023 / 04 / 30
저번에는 글자 수에 따라, 동적으로 작용하는 셀을 만들어봤습니다.
[Swift/TIL #18] UICollectionViewCompositionalLayout으로 Cell의 크기를 동적으로 만들어 보자 (더보기 버튼)
여기서 조금 더 조건을 추가하면,
텍스트가 3줄 이상일 때, 더 보기 버튼이 생성되도록 만들 수 있을 것 같습니다.
그러려면 먼저, 현재 텍스트의 줄 수를 알아야겠죠?
텍스트의 줄 수를 구하는 코드를 알아봅시다.
코드를 보면 (전체 텍스트 높이)와 (글자 폰트의 높이)로 글의 줄 수를 유추하는 것 같네요.
extension UILabel {
// https://stackoverflow.com/questions/28108745/how-to-find-actual-number-of-lines-of-uilabel
var lineCount: Int {
let text = (self.text ?? "") as NSString
let maxSize = CGSize(width: frame.size.width,
height: CGFloat(MAXFLOAT))
let textHeight = text.boundingRect(with: maxSize,
options: .usesLineFragmentOrigin,
attributes: [.font: font as Any],
context: nil).height
let lineHeight = font.lineHeight
return Int(ceil(textHeight / lineHeight))
}
}
사용
label.lineCount
참고
반응형
'프로젝트' 카테고리의 다른 글
[Swift/TIL #21] 키보드가 화면을 가릴 때, Y축으로 뷰 이동 방법 (0) | 2023.05.09 |
---|---|
[Swift/TIL #20] 이미지 메모리 최적화 방법들 (WWDC 18) (0) | 2023.05.02 |
[Swift/TIL #18] UICollectionViewCompositionalLayout으로 Cell의 크기를 동적으로 만들어 보자 (더보기 버튼) (0) | 2023.04.28 |
[Swift/TIL #17] viewDidLayoutSubviews 간단 정리 (0) | 2023.04.19 |
[Swift/TIL #16] Layer 그림자 설정 중, 보라색 경고 (dynamic shadows) (0) | 2023.04.18 |