gpt4 book ai didi

ios - 可调整大小然后可滚动的 UITextView,如 Telegram

转载 作者:行者123 更新时间:2023-11-28 10:32:00 24 4
gpt4 key购买 nike

我想创建可以同时调整大小和滚动的 UITextView ,就像 Telegram 、 Instagram 或 Whats App 上的那些允许 UITextView 增长到 8 行然后如果你向它添加更多文本就可以滚动我是能够使 UITextView 增长到 5 行,但如果它们是更多的文本,我看不到,因为 isScroll 属性被禁用

我的 UITextView 在 UIView 内部,左右有两个按钮,如果可能的话,我更愿意通过约束来实现,如果不通过代码也可以的话

enter image description here

最佳答案

Sagar的答案很好,但我想增强它并为其添加一些动画:

你需要的步骤

  • 为您的 textView 获取一个 outlet
  • 添加一个高度限制并为其设置一个导出
  • 实现textView的textViewDidChange委托(delegate)方法
  • textViewDidChange
    • 使用 textView.sizeThatFits(size) 计算新高度
    • 设置高度约束常量为新的高度
    • [可选] 为约束更改设置动画以更加用户友好

这是一个例子

class ViewController: UIViewController {

@IBOutlet weak var textView: UITextView!
@IBOutlet weak var textViewHeightConstraint: NSLayoutConstraint!

let maxTextHeight:CGFloat = 200
let minTextHeight:CGFloat = 50

let animationDuration:Double = 0.3

override func viewDidLoad() {
super.viewDidLoad()
textView.delegate = self
resizeTextViewToFitText()
}

func resizeTextViewToFitText() {
let size = CGSize(width: textView.frame.width, height: .infinity)
let expectedSize = textView.sizeThatFits(size)
self.textViewHeightConstraint.constant = max(min(expectedSize.height, self.maxTextHeight), self.minTextHeight)
self.textView.isScrollEnabled = expectedSize.height > self.maxTextHeight
UIView.animate(withDuration: animationDuration) {
self.view.layoutIfNeeded()
}
}
}

extension ViewController: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
resizeTextViewToFitText()
}
}

关于ios - 可调整大小然后可滚动的 UITextView,如 Telegram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com