2017-07-28 32 views
0

美好的一天都希望你的好。斯威夫特3 - UITextView总行计数器

这可能看起来像一个重复的问题,但没有任何工作对我来说。

我看过这个问题的多个实例,我尝试了很多不同的东西,它并没有解决我的问题。

我有一个约束到11行,然后成为可滚动的textview .....我想获得文本内容的总行数而不是屏幕上的显示大小所有的解决方案只是提供给我11但真正的行数是+ - 30行。即使我显示5行文本,它也会返回11

如何查找所有文本集体行数。

任何帮助,将不胜感激

回答

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

这会给你实际上是一个字符串走行数。

希望它有帮助!

+0

立即试用谢谢 –

+0

It Works ....非常感谢你,我真的很感谢它为此寻找解决方案的小时。 @Agent Smith –

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