0

我一直在努力设置创建这个,我在这里阅读了很多帖子,但不明白我做错了什么。

我有一个UITextView.

我希望它的高度扩大到一个数字,然后在启用滚动的情况下固定在该高度。

我已经设置UITextFieldDelegate并添加了以下内容 -

    func textViewDidChange(_ textView: UITextView) {
        let newSize = textView.sizeThatFits(CGSize(width: 0, height: CGFloat.greatestFiniteMagnitude))
        textView.frame.size = CGSize(width: 0, height: min(100, newSize.height))
    }

这样做可以继续增长。

我现在希望它停止并滚动,例如,高度为 100。

    func textViewDidChange(_ textView: UITextView) {
        let newSize = textView.sizeThatFits(CGSize(width: 0, height: CGFloat.greatestFiniteMagnitude))

        let newHeight = min(100, newSize.height)

        textView.frame.size = CGSize(width: 0, height: newHeight)

        textView.isScrollEnabled = newHeight >= 100
    }

此时发生的所有事情都是滚动视图在isScrollEnabled设置为时收缩true

我的 textView 仅锚定到topleading并且trailing它的父级。

启用滚动后,如何强制它不折叠?

编辑

我添加了以下内容,但是在以固定高度状态输入任何内容时,文本似乎“摇晃”

    func textViewDidChange(_ textView: UITextView) {
        let newSize = textView.sizeThatFits(CGSize(width: 0, height: CGFloat.greatestFiniteMagnitude))

        let newHeight = min(100, newSize.height)

        textView.frame.size = CGSize(width: 0, height: newHeight)

        if newHeight >= 100 {
            textView.isScrollEnabled = true
            textView.heightAnchor.constraint(equalToConstant: 100).isActive = true
        } else {
            textView.isScrollEnabled = false
            textView.heightAnchor.constraint(equalToConstant: 100).isActive = false
        }
    }
4

1 回答 1

1

最好设置一个默认的高度约束并连接它的出口并使用它的常量

self.txH.constant = newHeight
self.view.layoutIfNeeded()
于 2019-11-12T14:45:15.370 回答