func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
let newText = (textView.text as NSString).stringByReplacingCharactersInRange(range, withString: text)
var textWidth = CGRectGetWidth(UIEdgeInsetsInsetRect(textView.frame, textView.textContainerInset))
textWidth -= 2.0 * textView.textContainer.lineFragmentPadding
let boundingRect = sizeOfString(newText, constrainedToWidth: Double(textWidth), font: textView.font!)
let numberOfLines = boundingRect.height / textView.font!.lineHeight
debugPrint("11111111111111111")
debugPrint(newText)
debugPrint(textWidth)
debugPrint(boundingRect)
debugPrint(numberOfLines)
return numberOfLines <= 2;
}
func sizeOfString (string: String, constrainedToWidth width: Double, font: UIFont) -> CGSize {
return (string as NSString).boundingRectWithSize(CGSize(width: width, height: DBL_MAX),
options: NSStringDrawingOptions.UsesLineFragmentOrigin,
attributes: [NSFontAttributeName: font],
context: nil).size
}
本文介绍了一个自定义的 iOS UITextView 方法,该方法用于限制文本视图内的文本行数不超过两行,并通过计算文本宽度和高度来判断是否需要阻止输入更多的字符。文中详细展示了如何通过 Swift 实现这一功能。
1490

被折叠的 条评论
为什么被折叠?



