티스토리 뷰
iOS
[iOS 오토레이아웃 가이드] Advanced Auto Layout - Working with Self-Sizing Table View cells
rhinoPHS 2018. 8. 8. 07:07[iOS 오토레이아웃 가이드] Advanced Auto Layout - Working with Self-Sizing Table View cells
오토레이아웃으로 table view cell의 높이를 지정할 수 있습니다. 이는 기본적으로 돼 있지 않아서 추가적으로 코드를 적어줘야 합니다.
기본적으로 table view cell의 높이는 table view delegate method 중의 하나인 tableview:heightForRowAtIndexpath 메소드가 정합니다. cell 높이가 유동적으로 변하게 하기 위해서는 다음과 같이 해줘야 합니다.
tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableViewAutomaticDimension
그 다음 cell의 아이템들을 넣습니다. cell의 높이를 지정하기 위해서는, 유효한 제약조건이 있어야 하고 높이가 지정돼 cell content view의 top과 bottom을 채울 수 있는 뷰가 필요합니다. 만약 뷰가 intrinsic content height가 있으면 시스템은 그걸 사용합니다. 만약 없다면 적절한 높이 제약조건을 뷰와 cell의 content view에 줘야 합니다.
추가적으로 estimatedRowHeight는 가능한 정확하게 주는 게 좋습니다. 오토레이아웃 엔진이 그 값을 바탕으로 계산하기 때문입니다. 값이 정확하면 정확할수록 원할하게 만들어집니다.
그리고 table view cell에는 미리 정의된 layout이 있습니다. textLabel, detailTextLabel, imageView인데요. 이건 바꿀 수 없습니다. 다만 다음과 같은 제약조건은 가능합니다.
subview를 cell's content view에 거는 제약조건
subview를 cell's bounds 에 거는 제약조건
subview를 cell's predefined content 에 거는 제약조건