ios에서 tableView 셀의 높이를 동적으로 변경하려면, 즉 사용 가능한 콘텐츠에 따라 셀 크기를 조정하려면 자동 차원 속성을 사용해야 합니다. 샘플 프로젝트를 통해 이를 확인할 수 있습니다.
빈 프로젝트를 만들고 해당 viewController 클래스로 이동하여 UITableViewDataSource 및 UITableViewDelegate를 준수합니다.
이제 아래 코드에서 먼저 테이블을 만든 다음 해당 테이블에 대한 셀을 등록하고 일부 테이블 속성을 추가합니다.
테이블 뷰 델리게이트와 테이블 뷰 데이터 소스를 설정하겠습니다.
마지막으로 볼 테이블 뷰를 추가합니다. 그런 다음 뷰 컨트롤러의 viewDidLoad 메서드 내에서 이 함수를 호출합니다.
참고: EstimatedRowHeight 라는 속성을 설정했습니다.
func initTableView() { let tableView = UITableView() tableView.frame = self.view.frame tableView.dataSource = self tableView.delegate = self tableView.backgroundColor = colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1) tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") tableView.estimatedRowHeight = UITableView.automaticDimension self.view.addSubview(tableView) }
이제 이 코드는 뷰에 테이블을 추가하고 코드에서 원하는 섹션과 행 수를 테이블에 알려야 합니다.
func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 }
이 코드는 테이블 보기의 두 번째 행에 큰 텍스트 줄을 만들어 콘텐츠 크기에 따라 높이를 얻습니다.
참고: UITableViewCell은 기본적으로 레이블 속성을 가지고 있고 레이블은 기본적으로 1줄의 길이를 가지므로 자동 차원이 작동하도록 변경해야 합니다.
이제 테이블에 셀의 높이를 알려야 합니다.
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableView.automaticDimension }
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.