728x90
반응형

테이블 뷰를 사용할때 고정된 정적 높이가 아닌 동적 높이로 구현하고 싶을때가 있습니다.


카카오톡의 장문 내용처럼 개행을 했을때 일정하게 늘어나야 하지만


조금씩 뒤틀립니다.






기존에는 아래와 같은 방식으로 대략 높이를 맞추었습니다.


 
    // 높이 설정
    override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        let row = list[indexPath.row]
 
        // Default 50 + 글이 30자를 넘어갈 때마다 20만큼 높이를 증가
        let height = CGFloat(50 + (row.count / 30* 20)
        return height
    }
cs







하지만 IOS 8.0 버전 부터 동적으로 셀 높이를 정하는 방식을 도입했습니다.


이전과 달리 높이에 신경쓰지도 않고 깔끔하게 콘텐츠 높이가 조절됩니다.


이를 셀프 사이징 셀(Self-Sizing Cell) 방식이라고 합니다.







    tableView.estimatedRowHeight = 50
    tableView.rowHeight = UITableView.automaticDimension
cs



셀프 사이징 셀을 사용하려면 위의 2가지를 이해하면 됩니다.





1. extimatedRowHeight


임시 셀의 높이를 정할때 사용합니다.


셀 높이가 결정되기 전의 높이를 정해주면 됩니다.





2. UITableView.automaticDimension


테이블 뷰의 rowheight 속성에 대입되어 동적 높이가 설정되는 것을 테이블 뷰에 알려줍니다.


테이블 뷰의 rowHeight 속성이 UITableView.automaticDimension으로 설정되면


목록이 모두 만들어지고 레아아웃을 계산한다음 셀의 높이값을 재설정 합니다.








위와 같이 속성을 정하면 더 이상 직접 높이값을 처리 할 필요가 없습니다.


728x90
반응형

+ Recent posts