Change UITableViewCell Height on Orientation Change

前端 未结 2 1779
一整个雨季
一整个雨季 2021-02-08 03:25

I have a UITableView with cells containing variable-height UILabels. I am able to calculate the minimum height the label needs to be using sizeWithFont:constrainedToSize:l

相关标签:
2条回答
  • 2021-02-08 04:06

    To improve slightly on the answer above from @David and to answer the last comment about how to animate it smoothly during a rotation, use this method:

    - (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
        [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
        [self.tableView beginUpdates];
        [self.tableView endUpdates];
    }
    

    and of course the height delegate method:

    - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
            return 171.0f;
        } else {
            return 128.0f;
        }
    }
    
    0 讨论(0)
  • 2021-02-08 04:15

    Your UITableViewController can implement the tableView:heightForRowAtIndexPath: method to specify the row height for a particular row, and it can look at the current orientation ([[UIDevice currentDevice] orientation]) to decide what height to return.

    To make sure tableView:heightForRowAtIndexPath: gets called again when the orientation changes, you'll probably need to detect the orientation change as described in this question, and call [tableView reloadData].

    0 讨论(0)
提交回复
热议问题