Внутренний контент UITextView с учетом путей исключения - PullRequest
0 голосов
/ 06 ноября 2019

Жизнь раньше была простой:

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 с учетом исключений, за исключением того, что он суммируется с общим количеством высот исключений ???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...