Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableViewCell的动态高度计算取决于TextView';s高度_Ios_Iphone_Swift3 - Fatal编程技术网

Ios UITableViewCell的动态高度计算取决于TextView';s高度

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 =

我已经在tableview的内容中给出了textview的前导和尾随。我想动态计算Tableviewcell的高度。高度计算有时工作正常,但有时不适用于5c等特定设备

我使用了以下代码来估计文本的高度:

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)
}
  • 在tableview单元格的内容中为textview指定顶部、底部、前导和尾随
  • 禁用文本视图的滚动。然后,然后,这个方法工作。它通常用于聊天室,在聊天室中,我们希望能够自动检测链接、电话号码以及uitextview的滚动
  • 使用以下表格视图方法设置自动行高计算

    func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
    {
       return UITableViewAutomaticDimension
    }
    
    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
    
    {
       return 100
    }
    
  • 在tableview单元格的内容中为textview指定顶部、底部、前导和尾随
  • 禁用文本视图的滚动。然后,然后,这个方法工作。它通常用于聊天室,在聊天室中,我们希望能够自动检测链接、电话号码以及uitextview的滚动
  • 使用以下表格视图方法设置自动行高计算

    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