更改方向时更改 UITableViewCell 高度
我有一个 UITableView,其中包含可变高度 UILabels 的单元格。我可以使用 sizeWithFont:constrainedToSize:lineBreakMode: 来计算标签需要的最小高度,这在首次加载表视图时工作正常。当我旋转表格视图时,单元格变得更宽(意味着显示内容所需的行更少)。有什么方法可以让 UITableView 在方向更改动画期间或之前或之后重新确定单元格的高度?谢谢。
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:lineBreakMode:
, which works fine when the table view is first loaded. When I rotate the table view the cells become wider (meaning there are fewer lines required to display the content). Is there any way I can have the height of the cells redetermined by the UITableView during the orientation change animation or immediately before or after? Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的 UITableViewController 可以实现
tableView:heightForRowAtIndexPath:
方法来指定特定行的行高,并且它可以查看当前方向 ([[UIDevice currentDevice]orientation]
) 来决定返回的高度。为了确保在方向更改时再次调用
tableView:heightForRowAtIndexPath:
,您可能需要检测方向变化,如 这个问题,然后调用
[tableView reloadData]
。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 todetect the orientation change as described in this question, and call
[tableView reloadData]
.要稍微改进@David 上面的答案并回答关于如何在旋转期间平滑地设置动画的最后评论,请使用此方法:
当然还有高度委托方法:
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:
and of course the height delegate method: