Swift 3-UITextView总行计数器
祝你一切顺利 这似乎是一个重复的问题,但对我来说没有任何效果 我看过这个问题的多个例子,我尝试了很多不同的方法,但都没有解决我的问题 我有一个文本视图,它被限制为11行,然后可以滚动。。。。。我想得到的是文本内容的总行数,而不是屏幕上的显示大小。所有解决方案只提供11行,但实际行数是+-30行。即使我显示5行文本,它也返回11行 我怎样才能收集所有文本的行数 任何帮助都将不胜感激这里是我正在做的Swift 3-UITextView总行计数器,swift,xcode,swift3,uitextview,line-count,Swift,Xcode,Swift3,Uitextview,Line Count,祝你一切顺利 这似乎是一个重复的问题,但对我来说没有任何效果 我看过这个问题的多个例子,我尝试了很多不同的方法,但都没有解决我的问题 我有一个文本视图,它被限制为11行,然后可以滚动。。。。。我想得到的是文本内容的总行数,而不是屏幕上的显示大小。所有解决方案只提供11行,但实际行数是+-30行。即使我显示5行文本,它也返回11行 我怎样才能收集所有文本的行数 任何帮助都将不胜感激这里是我正在做的 extension String { func lines() -> CGF
extension String {
func lines() -> CGFloat {
let font = //your font
let width = //constrained width to which text can expand
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
return boundingBox.height/font.lineHeight
}
}
这将给出字符串实际占用的行数
希望能有帮助 使用此扩展解决您的问题
extension String {
func lines(font : UIFont, width : CGFloat) -> Int {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude);
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil);
return Int(boundingBox.height/font.lineHeight);
}
}
它起作用了。。。。非常感谢,我真的很感激,我已经为这个解决方案寻找了好几个小时了@史密斯探员