iOS/iOS Swift ToyProject

DynamicTableView 다른 크기의 셀 높이 지정

Developer-Michelle 2023. 2. 8. 20:57

DynamicTableView 다른 크기의 셀 높이 지정

<완성화면>

아래와 같이 description Label 의 길이가 제각각이어서 서로 다른 크기의 셀 높이를 갖는 테이블 뷰!


TIL

Dynamic Tableview 만들 때

테이블뷰 아래까지 꽉  차게 0 0 0 0 constraints를 잡는데 다만, 주의할 점은 다음과 같다.

아래 constraints 세부사항을으로 들어가서 safe area  bottom 이 아닌 superview.bottom 에 constraint를 건다.


 

Stackview 관련

1) Stackview일단 만든다 -> 너비 높이가 지정이 안되어있을 건데, Label 또는 button 하나만 넣어도 일단 파란불 들어옴.

2) 그 다음에 요소를 여러개 넣고 싶으니까 당연히 Stackview를 만들었을 것임...!! -> 복사+붙여넣기 여러개.

3) 만약 Stackview 안에 넣는 요소들을 같은 너비 또는 높이로 하고 싶은 경우, Fill Equally로 설정. + 그 밑에 spacing도 같이 조절.

 


Dynamic TableView

어차피 스크린 사이즈 (핸드폰 디바이스 전체 높이)를 알기 때문에,

안에 들어가는 요소들 각각 constraints를 빠짐 없이 걸면, 각 요소들의 높이는 저절로 계산되어서 잡힌다.

 

(아래 그림을 예로 들자면, Lorem Ipsum is~~~ 이 부부분이 무한정 늘어날 수 있다는 가정이 있음.

따라서 해당 라벨의 높이는 딱 ! 지정을 할 수는 없기 때문에 각 요소들의 constraints들만(여백 제약조건) 다 걸어주는거임.

그러면 해당 Lorem Ipsum is~~~ 이 부분의 높이는 저절로 잡힘)

 


무한정으로 늘어나는 라벨의 경우,

trailing constraints 줄 때

greater Than or Equal 로 주었음

그 이유는 해당 라벨이 여백 제약조건보다 더 작아질수도 길어질 수도 있으니깐

 


import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.delegate = self
        tableView.dataSource = self
        
        tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "TableViewCell")
        
        tableView.rowHeight = UITableView.automaticDimension
        tableView.estimatedRowHeight = 120
    }
}

 

중요한거 !!

tableView.rowHeight = UITableView.automaticDimension //Dynamic TableView 셀 높이 자동으로 조절

tableView.estimatedRowHeight = 120 // 예상하는 셀의 높이

 


복습

TableView 메소드 중에서

cellForRowAt의 역할: 

테이블뷰 드래그해서 조금씩 올릴 때마다 데이터와 뷰를 연결시켜주는 역할 (dequeReusableCell 셀을 재사용하면서)


트러블슈팅 1

왜 cell.descriptionLabel.text 에서 옵셔널 에러가 났을까?

=> xib 셀 등록을 빼먹어서

tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "TableViewCell")

 


 

트러블슈팅 2

TableView seperator 이 제대로 보이지 않는 현상 발생

 

 

해결:

tableView seperator style 속성에서 수정

 

원래 테이블뷰 seperator style 기본 설정은 automatic , left 15로 되어있는데,

이걸 위와 같이 custom, left 0 으로 설정하면 다음과 같이 완성.

 

참고)

https://minzombie.github.io/ios/separator/

 

https://www.youtube.com/watch?v=Z_aJWjarRpg&t=304s

'iOS > iOS Swift ToyProject' 카테고리의 다른 글

swift Apple로 로그인  (0) 2023.02.11
TableView 안에 TextView 넣기  (0) 2023.02.11
iOS swift 구글로 로그인  (0) 2023.02.04
iOS swift swipe back gesture  (0) 2023.02.01
카카오톡 로그인 구현  (0) 2023.01.31