从iOS 16开始,TextKit 2已经取代了UITextView
的TextKit 1,这意味着layoutManager
被淘汰,textLayoutManager
被淘汰。但是,旧的一些属性不在新的属性中。我如何使用TextKit 2计算UITextView
中的行数?下面是TextKit 1的实现。
extension UITextView {
var numberOfLines: Int {
if #available(iOS 16.0, *) {
// TextKit 2
let layout = textLayoutManager // new layout manager
} else {
// TextKit 1
let layout = layoutManager // old layout manager
var lines = 0
var index = 0
var lineRange = NSRange()
while index < layout.numberOfGlyphs {
layout.lineFragmentRect(forGlyphAt: index, effectiveRange: &lineRange)
index = NSMaxRange(lineRange)
lines += 1
}
return max(1, lines)
}
}
}
1条答案
按热度按时间wnvonmuf1#
您可以使用
enumerateTextLayoutFragments
来获得“真实的”行数,除以“\n”。