Жизнь раньше была простой:
open class IntrinsicallySizedTextView: UITextView
{
var lastIntrinsicContentSize: CGSize!
override open func layoutSubviews() {
super.layoutSubviews()
let ics = intrinsicContentSize
guard let lastIntrinsicContentSize=lastIntrinsicContentSize, lastIntrinsicContentSize == ics else {
invalidateIntrinsicContentSize()
self.lastIntrinsicContentSize = ics
setContentOffset(CGPoint(x: 0, y: 0), animated: false)
return
}
}
override open var intrinsicContentSize: CGSize
{
if text.isEmpty {
return CGSize.zero
}
let w = self.bounds.size.width
var intrinsicContentSize = sizeThatFits(CGSize(width: w, height: CGFloat(MAXFLOAT)))
intrinsicContentSize.width += (textContainerInset.left + textContainerInset.right ) / 2.0
return intrinsicContentSize;
}
open var numberOfLines: Int
{
let numberOfGlyphs = layoutManager.numberOfGlyphs
var numberOfLines = 0
var index = 0
var lineRange:NSRange = NSRange()
while (index < numberOfGlyphs) {
layoutManager.lineFragmentRect(forGlyphAt: index, effectiveRange: &lineRange)
index = NSMaxRange(lineRange);
numberOfLines = numberOfLines + 1
}
return numberOfLines
}
}
, но пути исключения проложены много веков назад, и мне была продемонстрирована необходимость в виде 4 "устройств.
Как могЯ выдумал высоту uitextview с учетом исключений, за исключением того, что он суммируется с общим количеством высот исключений ???