是否有任何选项可以让TextField适应他的内容?
答案 0 :(得分:0)
有一种方法可以通过在发生更改时调整textview的框架来手动完成。
var text: String = "Some text is just here..."
let size: CGSize = text.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)])
^代码将为您提供完全显示文本所需的大小,您可以根据它调整textView的大小。 //请注意textview中可能有一些填充
extension String {
func heightWithConstrainedWidth(width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
return boundingBox.height
}
}
^如果你需要动态高度(多行)约束宽度将帮助你完成任务。
我不完全确定你想要完成什么,但我希望这会有所帮助。
答案 1 :(得分:0)
为textview的高度约束创建一个oultet。之后:
textView.delegate = self
textView.isScrollEnabled = false
func textViewDidChange(_ textView: UITextView) {
let fixedWidth = textView.frame.size.width
textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
var newFrame = textView.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
heightTextview.constant = newFrame.size.height //update constraint constant with new height
}
textView将更改适合多行内容的高度。效果很好