gpt4 book ai didi

ios - 使用 swift 获取 tableView 中动态 textView 的高度,而不使用自动尺寸

转载 作者:行者123 更新时间:2023-11-30 11:31:27 26 4
gpt4 key购买 nike

我想动态计算 tableView 中 textView 的高度,以便在 heightForRowAt 中使用。我不想想要使用自动尺寸,因为它经常会扰乱我在 containerViews 中的滚动。

目前,我正在为每个单元格实例化一个 textView,添加文本并使用以下方法获取高度:

var textViewForCellHeight = UITextView()
textViewForCellHeight.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)

textViewForCellHeight.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.size.width - cellHorizontalPadding - tableView.safeAreaInsets.left - tableView.safeAreaInsets.right, height: 0)
textViewForCellHeight.text = myString
textViewForCellHeight.sizeToFit()
return textViewForCellHeight.frame.size.height

heightForRowAt 中使用它可以很好地工作,并为单元格提供正确的高度,但它的成本很高,并且会大大减慢 tableView 的速度。有没有更有效的方法来使用 textView 动态获取 tableView 单元格的高度?

最佳答案

您可以简单地在这个函数中传递您的字符串,您将根据您的字符串获得动态高度。

 func calculateHeight(inString:String) -> CGFloat
{
let messageString = input.text
let attributes : [NSAttributedStringKey : Any] = [NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue) : UIFont.systemFont(ofSize: 15.0)]

let attributedString : NSAttributedString = NSAttributedString(string: messageString!, attributes: attributes)

let rect : CGRect = attributedString.boundingRect(with: CGSize(width: 222.0, height: CGFloat.greatestFiniteMagnitude), options: .usesLineFragmentOrigin, context: nil)

let requredSize:CGRect = rect
return requiredSize.height
}

关于ios - 使用 swift 获取 tableView 中动态 textView 的高度,而不使用自动尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50207687/

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