在 IOS 8 中工作的具有动态高度的 UITableView 行在 ios 7 中不工作
Posted
技术标签:
【中文标题】在 IOS 8 中工作的具有动态高度的 UITableView 行在 ios 7 中不工作【英文标题】:UITableView Rows With Dynamic height working in IOS 8 not working in ios 7 【发布时间】:2014-11-29 07:51:56 【问题描述】:我有一个表格视图,我需要在其中填充具有动态高度的行。
我做了什么:
我有一个高度会动态变化的文本标签。因此,当我在单元格上设置数据时,我将其设置为:
-(void)setCommentDataOnCell:(CommentModel*) data
CGFloat currentHeigh=_commentTextLabel.frame.size.height,heightDiff;
//Here is the label with dynamic height
_commentTextLabel.text=data.commentText;
[_commentTextLabel sizeToFit];
[self layoutIfNeeded];
heightDiff=_commentTextLabel.frame.size.height-currentHeigh;
// I change the frame of cell here ie, add the height difference in label
[self setFrame:CGRectMake(self.contentView.frame.origin.x, self.contentView.frame.origin.y, self.contentView.frame.size.width, self.contentView.frame.size.height+heightDiff)];
[self layoutIfNeeded];
commentAuthorLabel.text=data.createdUserName;
现在我已经设置了自动布局,以便动态单元格与单元格内容视图的底部和顶部对齐
然后我为我的 tableview 设置了以下属性
commentListTableView.rowHeight=UITableViewAutomaticDimension;
commentListTableView.estimatedRowHeight=44.0f;
现在我得到了什么:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[DiscussionDetailViewController tableView:heightForRowAtIndexPath:]:无法识别的选择器发送到实例 0x78787760”
我还没有实现这个选择器 heightForRowAt
但是我已经实现了 EstimatedHeight as 75.0f,就像我的故事板中的原型单元格一样,我也有一个高度为 8.0f 的会话的标题视图
【问题讨论】:
【参考方案1】:您需要实现 heightForRowAtIndexPath 方法以支持 ios 7。
请参考这个答案:
https://***.com/a/18746930/1282896
【讨论】:
以上是关于在 IOS 8 中工作的具有动态高度的 UITableView 行在 ios 7 中不工作的主要内容,如果未能解决你的问题,请参考以下文章
高度的自动布局在 iOS 8 中工作但在 iOS 7 中不工作
iOS 7 和 iOS 8 中动态 UITableViewCell 的高度是不可能的