Вот два нюанса в прошивкой 8.3 приходя с textView.textContainer.maximumNumberOfLines = 10
Обратитесь к моему gist, пожалуйста.
textView.attributedText = originalContent
let lineLimit = 10
textView.isEditable = true
textView.isScrollEnabled = false
textView.textContainerInset = .zero // default is (8, 0, 8, 0)
textView.textContainer.maximumNumberOfLines = lineLimit // Important condition
textView.textContainer.lineBreakMode = .byTruncatingTail
// two incomplete methods, which do NOT work in iOS 8.3
// size.width可能比maxSize.width小 ————遗憾的是 iOS 8.3 上此方法无视maximumNumberOfLines参数,所以得借助于UILabel
// size.width may be less than maxSize.width, ---- Do NOT work in iOS 8.3, which disregards textView.textContainer.maximumNumberOfLines
// let size = textView.sizeThatFits(maxSize)
// 遗憾的是 iOS 8.3 上此方法失效了,得借助于UILabel
// Does not work in iOS 8.3
// let size = textView.layoutManager.usedRectForTextContainer(textView.textContainer).size
// Suggested method: use a temperary label to get its size
let label = UILabel(); label.attributedText = originalContent
let size = label.textRect(forBounds: CGRect(origin: .zero, size: maxSize), limitedToNumberOfLines: lineLimit).size
textView.frame.size = size
Возможный дубликат [Как размер в UITextView на его содержание?] (HTTP://переполнение стека.com/questions/50467/how-do-i-size-a-uitextview-to-its-content) –
Я использую nextGrowingTextView https://github.com/muukii/NextGrowingTextView Я даже написал реализацию в Objective c https : //github.com/mcmatan/NextGrowingInternalTextViewObjectiveC – MCMatan
CSGrowingTextView также является альтернативой этой проблеме: https://github.com/cloverstudio/CSGrowingTextView –