gpt4 book ai didi

ios - UITableview swift 中的 UITextview 高度

转载 作者:行者123 更新时间:2023-11-28 10:19:39 24 4
gpt4 key购买 nike

我在 UITableViewCell 中设置 UITextview 时遇到问题。由于函数 heightforrowatindexpathcellforrowatindexpath 之前运行,所以我无法计算 UITextview 的内容大小。

我通过 cellforrowatindexpath 函数中的简单 textview.contentSize.height 计算大小。

我基本上想要 UITextview contentHeight 适合 UITableViewCell 所以每个 UITextView 都看不到滚动,它将通过增加高度显示完整内容的 UITableViewCell

我还在 UITableViewCell 中的 UITextView 上方添加了一个 UILabel,我试图为两者设置约束,但无法实现我的目标。

如何在以下函数中动态计算 UITableViewCell 的大小:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

}

P.S: 是否可以根据设备高度、使用自动布局或其他技术稍微增加 UITableViewCell 高度。

最佳答案

您可以只传递带有内容的 textView 以计算 textView 的高度

func calculateHeight(textView:UITextView, data:String) -> CGRect {

var newFrame:CGRect!

// I was using the HTML content here. If your content is not HTML you can just pass the stringValue to your textView
do {
let attr = try NSAttributedString(data: html.dataUsingEncoding(NSUTF16StringEncoding)!, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], documentAttributes: nil)
textView.attributedText = attr

}catch {
//Handle Exceptions
}

let fixedWidth = textView.frame.size.width
textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
newFrame = textView.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
print("height \(newFrame.height)")
return newFrame
}

您可以在 heightForRowAtIndex 中调用此方法,作为返回,您可以获得一个新的更新框架,您可以从中获取新的更新高度。

确保在 cellForRowAtIndexPath 中将单元格的 textView 的 scrollEnabled 保持为 false

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

//Cell making here......

cell.yourTextView.scrollEnabled = false
return cell
}
}

关于ios - UITableview swift 中的 UITextview 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36677827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com