设置其高度后,UITextView的大小取决于其内容SWIFT

时间:2015-12-08 17:18:59

标签: ios swift autolayout uitextview frame

我有一个UITextView,其高度约束是为了使帧的高度适应其内容(取决于字符串的长度)。 (我使用autolayout)。它工作正常。

caseA caseB

但是,我对文本视图框架的大小并不了解。

我解释一下。

我在设置uitextview的文本后,以及更新约束后显示帧信息。

override func viewDidLoad() {
    ...
    self.textview.text = post.title
    ...
}

override func viewDidLayoutSubviews() {

    let contentSize = self.textview.sizeThatFits(self.textview.bounds.size)
    self.heightConstraint.constant = contentSize.height
    self.textview.layoutIfNeeded()

    print(self.textview.frame) // frame
    print(self.textview.bounds) // bounds
}    

结果:

案例A:

(8.0, 0.0, 584.0, 97.0) //frame
(0.0, 0.0, 584.0, 97.0) //bounds

案例B:

(8.0, 0.0, 584.0, 97.0) //frame
(0.0, 0.0, 584.0, 97.0) //bounds

我不明白为什么框架的高度在两种情况下都相同???

1 个答案:

答案 0 :(得分:0)

如果您不需要UITextView的滚动部分,这将解决问题:

class ViewController: UIViewController {

    let textView = UITextView()

    override func viewDidLoad() {

        super.viewDidLoad()

        self.view.backgroundColor = UIColor.whiteColor()

        self.view.addSubview(self.textView)
        self.textView.backgroundColor = UIColor.redColor()
        self.textView.text = "Hello world Hello world Hello world Hello world Hello world Hello world"

        self.textView.translatesAutoresizingMaskIntoConstraints = false
        self.textView.topAnchor.constraintEqualToAnchor(self.view.topAnchor).active = true
        self.textView.leftAnchor.constraintEqualToAnchor(self.view.leftAnchor).active = true
        self.textView.rightAnchor.constraintEqualToAnchor(self.view.rightAnchor).active = true

        self.textView.scrollEnabled = false // magic which will help auto expanding 
    }
}