[Showpot 회고] lineBreakMode가 동작하지않은 이슈

이건준·2024년 7월 19일
0

Showpot 자간, 줄높이 적용 이슈

  • 위 이슈 이후 기존 라벨에 적용되었던 lineBreakMode가 올바르게 동작하지않음

첫번째 해결책 - 너비에 대한 오토레이아웃 적용

artistImageView.snp.makeConstraints {
            $0.size.equalTo(100)
            $0.top.directionalHorizontalEdges.width.equalToSuperview()
}
        
artistNameLabel.snp.makeConstraints {
            $0.top.equalTo(artistImageView.snp.bottom).offset(5)
            $0.directionalHorizontalEdges.bottom.equalToSuperview()
}
  • 기존 코드에서는 이미지에 대한 사이즈를 고정시키고 나머지 부분을 라벨로 채우고 horizontalEdges로 개발하였음
  • 그래서 artistNameLabel의 슈퍼뷰에 대한 width제약조건을 추가함 -> 해결 X

두번째 해결책 - attribute내부 문제

  • 기존에 원래 lineBreakMode가 잘 동작하였는데 자간, 줄높이, baseline값을 attribute로 변경한 이후로 적용되지않음
  • attribute를 적용하는 내부적으로 라벨의 lineBreakMode를 덮는 코드가 있는건가 의문

    이 부분에 대한 정보를 다루는 레퍼런스를 알고싶은데 찾지못함

extension FeaturedSubscribeArtistCell {
    func configureUI(with model: FeaturedSubscribeArtistCellModel) {
        artistImageView.kf.setImage(with: model.artistImageURL)
        artistNameLabel.setAttributedText(font: ENFont.self, string: model.artistName)
        artistNameLabel.lineBreakMode = .byTruncatingTail
    }
}
  • 외부에서 모델데이터를 UI에 넣어주고있는데 이 부분에서 attribute적용 이후에 다시 라벨의 lineBreakMode를 적용시도 - 해결 O

궁금한 점

  • 생각보다 자간, 줄높이를 적용하면서 이슈들을 많이 마주함
  • 왜 자간, 줄높이를 적용하면 lineBreakMode가 동작하지않은것처럼 보이는건가, 내부적으로 덮어씌우는 로직이 있을까 ?

0개의 댓글