gpt4 book ai didi

Swift - 扩展并保持在中心的 TextView

转载 作者:行者123 更新时间:2023-11-28 14:39:11 25 4
gpt4 key购买 nike

我正在努力实现我脑海中的一个想法,但我被卡住了..


我需要一个可以两种方式扩展的 TextView:widht-height。

具有最小和最大宽度以及最小高度。

即居中于父 (SCROLL) View 的中间。

在 View 的底部尾部有一个按钮发送

想法是这样的:

enter image description here

因此,如果用户在框中键入内容,那么它会向两个方向扩展。但是它有一个最大宽度(所以它不会离开屏幕)但是高度没有限制:由于父 ScrollView 。


问题是当文本换行时,textView 的高度不会扩展。

代码:

func textViewDidChange(_ textView: UITextView) {
self.adjustTextViewFrames(textView: textView)
}
func adjustTextViewFrames(textView : UITextView){

var newSize = textView.sizeThatFits(CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude))



if newSize.width > self.view.bounds.width - 20 {
newSize.width = self.view.bounds.width - (self.view.bounds.width/10)
}

messageBubbleTextViewWidthConstraint.constant = newSize.width
messageBubbleTextViewHeightConstraint.constant = newSize.height

UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}

}

最佳答案

试试这个:

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

// let's create our text view
let textView = UITextView()
textView.frame = CGRect(x: 0, y: 0, width: 200, height: 100)
textView.backgroundColor = .lightGray
textView.text = "Here is some default text that we want to show and it might be a couple of lines that are word wrapped"

view.addSubview(textView)

// use auto layout to set my textview frame...kinda
textView.translatesAutoresizingMaskIntoConstraints = false
[
textView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
textView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
textView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
textView.heightAnchor.constraint(equalToConstant: 50)
].forEach{ $0.isActive = true }

textView.font = UIFont.preferredFont(forTextStyle: .headline)

textView.delegate = self
textView.isScrollEnabled = false

textViewDidChange(textView)
}

}

extension ViewController: UITextViewDelegate {

func textViewDidChange(_ textView: UITextView) {
print(textView.text)
let size = CGSize(width: view.frame.width, height: .infinity)
let estimatedSize = textView.sizeThatFits(size)

textView.constraints.forEach { (constraint) in
if constraint.firstAttribute == .height {
constraint.constant = estimatedSize.height
}
}
}

}

感谢 Brian Voong 在此处构建应用程序 link

关于Swift - 扩展并保持在中心的 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50661410/

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