나만의 공부 노트

Table View에 관하여 본문

정리 X/UIKit

Table View에 관하여

va95 2021. 2. 6. 02:17

테이블 뷰에서 셀의 높이를 결정하는 법

 

 


 

 

1. 스토리보드에서에서 정적으로 할당 가능

(아래의 delegate, auto를 안쓴다는 가정하에..)

 

 

1-1. Dynamic table인 경우

각각의 table view cell는 무시되고 table view에서 지정한 셀 높이가 됨

 

2-1. Static table인 경우

table view에서 지정한 셀 높이보다 각각의 table view cell의 높이로 잘 지정됨

 

 


 

 

2. delegate

 

delegate를 쓴다는 것은 결국 동적 테이블이다 ->  스토리보드에서 지정한 table view가 가진 cell의 높이로 결정!

그러나 테이블 뷰가 계속 datasource, delegate로 물어보니 아래의 함수가 호출되어 결국 아래 함수가 최종 winner!

 

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    <#code#>

} -> 근데 이렇게 하면 셀마다도 안에 그림같은게 크기가 달라지면 높이가 달라져야하는데 매우 불편쓰

 

 

 


 

 

 

3. UITableViewAutomaticDimension

 

 

전체 : tableView.estimatedRowHeight = 50 <- 기본적인 default 값으로 너무 차이나지 않게 잘 넣어주고, 제약조건 설정을 매우 잘해야한다

개별 : override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {

    <#code#>

} <- 함수 통해 개별로도 가능해버리기~

값의 차이가 많이 나거나 제약조건이 불충분하면 높이가 어긋나서 스크롤이 이상해지고 다른 버튼이 눌리는 현상이 발생할 수 있다고 함!

 

 

 

* 이걸 쓰는 이유가 estimated 안쓰고 다 계산해서 구하면 셀이 1만개인경우는 content 사이즈 어케 구함?;;

너무 비용이 크기때문에 estimated로 일단 content사이즈 대충 구하고 스크롤링할 때 부족하면 content size를 리사이징해서 해결하는 듯

그래서 estimated 값이 너무 작으면 문제가 생기겠지요?? 잘 씁시당

-> 강의를 보니 화면에 안나타나는 셀들은 estimated 값을 쓴다고 함 autolayout 값을 다 계산하면 폭발하니

 

 

 

tableView.rowHeight = UITableView.automaticDimension <- 자동으로 높이를 쓰겠다 선언!(Constraint 잘!!!하!!자!!)

-> 이거 해놓고 delegate를 쓰면 바보겠지?

해보니깐 셀의 뷰에 높이를 측정할 수 있게 엄청 잘 constraint를 걸어줘야댐

만약 왼쪽 위 만 걸어놨으면 아래 쪽이 얼마나 길고 짧을 지 가늠 안됨 -> delegate나 기본 cell 높이 따름..

 

 

 

 


 

 

 

dequeueReusableCell(withIdentifier: <#T##String#>)

dequeueReusableCell(withIdentifier: <#T##String#>, for: indexPath)

의 차이는 전자가 더 옛날 버전!

identifier가 없으면 전자는 nil을 반환하지만, 후자는 assert를 내줌!

 

 

+ xib로 만든 셀이 있다면 다음과 같이 사용

let nibName = UINib(nibName: "WeatherCell", bundle: nil)

tableView.register(nibName, forCellReuseIdentifier: "weatherCell")

'정리 X > UIKit' 카테고리의 다른 글

Navigation Bar에 대하여  (0) 2021.02.07
Scroll View에 관하여  (0) 2021.02.06
Control에 관하여  (0) 2021.02.06
View에 관하여  (0) 2021.02.06
Life Cycles에 관하여  (0) 2021.02.06