gpt4 book ai didi

ios - 测量 UITextView 中的行高

转载 作者:行者123 更新时间:2023-11-28 14:38:36 24 4
gpt4 key购买 nike

我正在尝试测量行的高度以在 UITextView 中的特定文本上放置一个覆盖层。具体来说,我所说的行是指用 \n 分隔的文本。所以一条线实际上可以跨越多条线,这就是我要测量的。我尝试了几种不同的方法,但是,我似乎无法正确计算高度。我当前方法的另一个弱点是它必须全部在主同步线程上计算,这不太理想,因为我有很多计算要做。

示例 UI 方法

measurement.font = UIFont(name: "Menlo", size: 16)
measurement.frame = CGRect(x: 0, y: 0, width: 10000, height: 50)

func heightForString(line: String) -> CGFloat {
var height : CGFloat = 0
measurement.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 10000)
measurement.sizeToFit()
height = measurement.frame.height
print(height, lineHeight)
measurement.frame = CGRect(x: 0, y: 0, width: 10000, height: 50)
return height
}
// Comparing the returned height to measurement.font?.lineHeight and padding shows the results make little sense... :(

示例打印

应该是 1 行

30.0 18.625

应该是3行

43.6666666666667 18.625

最佳答案

func heightForString(line: String) -> CGFloat {
let textView = UITextView()
let maxwidth = UIScreen.main.bounds.width
textView.frame = CGRect(x:0,y: 0,width: maxwidth,height: CGFloat(MAXFLOAT))
textView.textContainerInset = UIEdgeInsets.zero
textView.textContainer.lineFragmentPadding = 0
textView.font = UIFont(name: "Menlo", size: 16)
textView.text = line
textView.isScrollEnabled = false
textView.sizeToFit()
return textView.frame.size.height
}

关于ios - 测量 UITextView 中的行高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50695494/

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