Swift 3-UITextView总行计数器

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

祝你一切顺利

这似乎是一个重复的问题,但对我来说没有任何效果

我看过这个问题的多个例子,我尝试了很多不同的方法,但都没有解决我的问题

我有一个文本视图,它被限制为11行,然后可以滚动。。。。。我想得到的是文本内容的总行数,而不是屏幕上的显示大小。所有解决方案只提供11行,但实际行数是+-30行。即使我显示5行文本,它也返回11行

我怎样才能收集所有文本的行数

任何帮助都将不胜感激

这里是我正在做的

 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);
    }
}

它起作用了。。。。非常感谢,我真的很感激,我已经为这个解决方案寻找了好几个小时了@史密斯探员