我想以编程方式设置UITextView
的高度以相应地调整内容。我已将UITextView
的默认高度设置为遵循我设置的布局限制,但希望在用户触摸按钮时更改它。
@IBOutlet weak var descriptionHeight: NSLayoutConstraint!
我尝试使用layoutIfNeeded()
,但它并没有改变文本视图的大小(因为大小由布局约束保留)。
我试图暂时禁用这样的约束:
print("before: \(descriptionTextView.frame)")
descriptionHeight.active = false
descriptionTextView.layoutIfNeeded()
print("after: \(descriptionTextView.frame)")
descriptionHeight.constant = descriptionTextView.frame.height
descriptionHeight.active = true
但是当停用它后访问插座时,它会引发异常:
致命错误:在解包可选值时意外发现nil
它似乎正在正确计算大小:
之前:(8.0,8.0,398.0,100.0)
之后:(8.0,8.0,398.0,954.666666666667)
为什么会这样?
有没有更好的方法来计算和设置UITextView
的正确大小?
答案 0 :(得分:9)
设置插座strong
:
@IBOutlet strong var descriptionHeight: NSLayoutConstraint!
修改强>:
似乎Xcode的最新版本增加了出口:
@IBOutlet var descriptionHeight: NSLayoutConstraint!
正如@Dan在评论中提到的那样。