我有一个UITextView,其高度约束是为了使帧的高度适应其内容(取决于字符串的长度)。 (我使用autolayout)。它工作正常。
但是,我对文本视图框架的大小并不了解。
我解释一下。
我在设置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
我不明白为什么框架的高度在两种情况下都相同???
答案 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
}
}