UITableView의 Cell 높이를 지정하는 방법으로 지금까지 파악한 것은 두가지 정도가 있습니다.

한가지는 UITableViewDelegate인 tableView:heightForRowAtIndexPath: 를 이용하는 방법, 그리고 다른 한가지는 UITableView의 property인 rowHeight 값을 지정하는 방법.

하지만 이 두가지 방법의 성능(performance)의 차이가 분명하므로 사용 목적에 따라 주의 해야합니다. apple 문서에도 나와있듯이 tableView:heightForRowAtIndexPath 의 경우 row에 따라 다양한 높이 지정이 필요한 경우에만 사용하고 기타 동일한 높이를 지정할 경우엔 rowHeight를 사용해야합니다.

tableView:heightForRowAtIndexPath:

Asks the delegate for the height to use for a row in a specified location.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

Parameters
tableView

The table-view object requesting this information.

indexPath

An index path that locates a row in tableView.

Return Value

A floating-point value that specifies the height (in points) that row should be.

Discussion

The method allows the delegate to specify rows with varying heights. If this method is implemented, the value it returns overrides the value specified for the rowHeight property of UITableView for the given row.

There are performance implications to using tableView:heightForRowAtIndexPath: instead of the rowHeight property. Every time a table view is displayed, it calls tableView:heightForRowAtIndexPath: on the delegate for each of its rows, which can result in a significant performance problem with table views having a large number of rows (approximately 1000 or more).