Danny의 iOS 컨닝페이퍼
article thumbnail

[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

 

 

참고

stackoverflow.com

 

 

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!