Ios UITableViewCell的动态高度计算取决于TextView';s高度
我已经在tableview的内容中给出了textview的前导和尾随。我想动态计算Tableviewcell的高度。高度计算有时工作正常,但有时不适用于5c等特定设备 我使用了以下代码来估计文本的高度:Ios UITableViewCell的动态高度计算取决于TextView';s高度,ios,iphone,swift3,Ios,Iphone,Swift3,我已经在tableview的内容中给出了textview的前导和尾随。我想动态计算Tableviewcell的高度。高度计算有时工作正常,但有时不适用于5c等特定设备 我使用了以下代码来估计文本的高度: func estimateFrameForText(text: String) -> CGRect { let size = CGSize(width: self.view.frame.size.width, height: 10000000) let options =
func estimateFrameForText(text: String) -> CGRect {
let size = CGSize(width: self.view.frame.size.width, height: 10000000)
let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
return NSString(string: text).boundingRect(with: size, options: options, attributes: [NSFontAttributeName: UIFont.init(name: FontStyle.FontName.kDefault, size: 15.0)!], context: nil)
}
这里重要的是文本是HTML文本,我已经将其转换为纯文本。然后,该纯文本被传递给上述函数
-(CGSize) sizeForStirngInFrameSize:(CGSize)viewSize withFont:(UIFont *)font{
CGSize stringSize = [self boundingRectWithSize:CGSizeMake(viewSize.width, viewSize.height) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName: font} context:nil].size;
return stringSize;
}
我创建此方法是为了查找我的UI标签和UITextView的高度,您可以使用相同的方法计算textview的高度,并在heightForRowAt中返回。。。委托方法
确保传递正确的视图大小和相同的字体。和约束
谢谢
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print(textView.contentSize.height)
}
我创建此方法是为了查找我的UI标签和UITextView的高度,您可以使用相同的方法计算textview的高度,并在heightForRowAt中返回。。。委托方法
确保传递正确的视图大小和相同的字体。和约束
谢谢
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print(textView.contentSize.height)
}
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
{
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
{
return 100
}
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
{
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
{
return 100
}
UITableViewCell中的组件是什么?您使用过autolayout吗?是的,我使用过autolayout将tableview单元格高度设置为<代码>自动标注代码>并设置<代码>前导、尾随,顶部和底部单元格中文本视图的约束。然后将滚动启用设置为
false
。这样就不需要自己计算高度了自动标注
会解决这个问题,我已经完成了这个步骤。自动标注在这种情况下不起作用。UITableViewCell中的组件是什么?您使用过自动布局吗?是的我已使用autolayoutset tableview单元格高度设置为自动标注
,并设置了前导、尾随、,顶部和底部
单元格中文本视图的约束。然后将滚动启用设置为false
。这样就不需要自己计算高度了自动尺寸
将解决这个问题,我已经做了这个兄弟…自动尺寸在这种情况下不起作用。Ashwin我使用相同的方法计算高度。约束包括前导、尾随、顶部和底部。全部设置为零。HTML文本使用以下方法转换为纯文本:let attributedString=尝试NSMutableAttributedString(数据:string.data(使用:string.Encoding.utf8,allowLossyConversion:true)!,选项:[NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType],documentAttributes:nil)attributedString.addAttribute(NSFontAttributeName,值:UIFont.init(名称:“Helvetica”,大小:15.0)!,范围:NSMakerRange(0,attributedString.length))返回attributedStringSo,这是否有效?因为它对我来说很好。。。仅供参考,现在我在swift工作了几天,我已经用上面的方法导入了字符串类别,它在swift中也工作得很好…有时它工作得很好。我认为这可能是由于HTML文本。我把它转换成纯文本。Ashwin我用同样的方法计算高度。约束包括前导、尾随、顶部和底部。全部设置为零。HTML文本使用以下方法转换为纯文本:let attributedString=尝试NSMutableAttributedString(数据:string.data(使用:string.Encoding.utf8,allowLossyConversion:true)!,选项:[NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType],documentAttributes:nil)attributedString.addAttribute(NSFontAttributeName,值:UIFont.init(名称:“Helvetica”,大小:15.0)!,范围:NSMakerRange(0,attributedString.length))返回attributedStringSo,这是否有效?因为它对我来说很好。。。仅供参考,现在我在swift工作了几天,我已经用上面的方法导入了字符串类别,它在swift中也工作得很好…有时它工作得很好。我认为这可能是由于HTML文本。我正在将其转换为纯文本。谢谢它的工作。。。但是你能告诉我估计高度是多少吗?当内容较少时,它会将单元格大小设置为100。谢谢它的工作。。。但是你能告诉我估计高度是多少吗?当内容较少时,它会将单元格大小设置为100