Swift 3 - UITextView总行计数器

时间:2017-07-28 12:34:32

标签: swift xcode swift3 uitextview line-count

美好的一天都希望你好。

这似乎是一个重复的问题,但没有什么对我有用。

我已经查看了这个问题的多个实例,我尝试了很多不同的事情,但它并没有解决我的问题。

我有一个受限于11行的textview然后变得可滚动.....我想得到文本内容的总行数而不是屏幕上的显示大小所有解决方案只提供了11行但真正的行数是+ - 30行。即使我显示5行文本它返回11

我如何能够集体地找出所有文本的行数。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

使用此扩展程序解决您的问题!

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

答案 1 :(得分:0)

这就是我正在做的事情

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

这将为您提供实际为字符串的行数。

希望它有所帮助!!