Things take time

[SWIFT] UITAableViewCell의 RowHeight, 높이를 유동적(Dynamic)으로 조절하기 본문

iOS (기능)

[SWIFT] UITAableViewCell의 RowHeight, 높이를 유동적(Dynamic)으로 조절하기

겸손할 겸 2017. 11. 13. 16:07

[개요]


테이블 뷰의 행, cell의 높이는 보통 

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 70
    }

와 같이 heighForRowAt에서 일괄적으로 적용할 수 있다.

그러나 만약 각 행에 들어가는 이미지 뷰, 텍스트 뷰 등의 크기가 유동적이라면 이 방법으로는 대응할 수 없다.



여러 구글링을 한 결과,

위의 heightForRowAt함수에서 들어가는 이미지나 문자열의 길이를 계산해서 높이를 개별적으로 지정하는 방법을 사용했었으나 영문이 아닌 한글일 때 계산하는 방법 등 오래된 방법이란 것을 알았다.


iOS 8버전때부터 등장한 방법으로 소개한다. 



[코드]

        // tableView의 계산된 높이 값은 68이다. 즉 Default Height이다.
        UITableView.estimatedRowHeight = 68.0
        // tableView의 rowHeight는 유동적일 수 있다
        UITableView.rowHeight = UITableViewAutomaticDimension

단, 이 방법을 사용하기 전에 필수 조건은 스토리보드 상에서 혹은 프로그래밍으로 먼저! 제약조건을 걸어 컴포넌트들의 오토레이아웃을 설정해야 한다. 그리고 위의 heightForRowAt 함수를 오버라이딩 하지 않는다.

그리고 위의 코드를 작성하면 된다.