ios - 如何调整 UITextView 的大小,使其根据内容自动调整其宽度和高度,并在达到特定值时固定宽度?

标签 ios swift xcode uitextview

我尝试使用以下代码创建自动调整大小的 UITextView。

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

}

当我输入第一个字符时,它不会调整该字符的宽度。我尝试的另一个解决方案是这样的。

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

}

它的宽度卡在第一个字符上,使用此解决方案每行只有一个字符。我该如何解决这个问题?

最佳答案

试试这个:

    let maximumWidth: CGFloat = 200 // Change as appropriate for your use.
    let newSize = textView.sizeThatFits(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
    textView.frame.size = CGSize(width: newSize.width, height: newSize.height)

您需要想出一种方法来确定最大宽度,因为我现在刚刚对其进行了硬编码。

这会将 UITextView 水平扩展至 200 点,然后开始垂直扩展。

关于ios - 如何调整 UITextView 的大小,使其根据内容自动调整其宽度和高度,并在达到特定值时固定宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196142/

相关文章:

swift - 懒让?结构中的快速解决方法

ios - 在prepareForSegue方法中出现错误 "cannot assign a value of type"(Swift,Xcode 6)

ios - 在 Spritekit 中加载粒子纹理时出错?

ios - 结构属性闭包在 Swift 中只运行一次

ios - 在 IOS 9 上运行时 Xcode 8 屏幕损坏

arrays - 访问字典中的数组 (swift)

ios - 清除 UIWebview 缓存

ios - Codables 错误与 Alamofire "Cannot convert value of type ' [字符串 : Any ]' to expected argument type ' Data'"

swift - 从代码覆盖率中排除 SwiftUI 预览?

swift - 动画文本没有出现在我的 UIView 对象中