gpt4 book ai didi

ios - 根据 contentSize 调整自定义 UITableViewCell 中的 UITextView 大小

转载 作者:行者123 更新时间:2023-11-30 13:50:35 24 4
gpt4 key购买 nike

我正在尝试自己制作消息气泡。我正在使用自定义 UITableViewCell 类并尝试调整其中的 UITextView 大小。

但是 UITextView 可以很好地调整其高度,但不能调整宽度。

这是我尝试过的。

我创建了一个xib;

enter image description here

如您所见,xib 中有 6 个约束。尾随、前导、顶部和底部空间限制以及最大/最小宽度限制。

这是自定义 UITableViewCellawakeFromNib(:) 方法;

 override func awakeFromNib() {
super.awakeFromNib()
self.messageContent.layer.cornerRadius = 5
self.messageContent.clipsToBounds = true
self.messageContent.editable = false
self.messageContent.scrollEnabled = false
self.messageContent.sizeToFit()
self.messageContent.layoutIfNeeded()
let size = self.messageContent.sizeThatFits(CGSizeMake(messageContent.contentSize.width, CGFloat.max))
messageContent.bounds.size = size
// Initialization code
}

当我运行这段代码时,结果如下;

enter image description here这有一点效果,但不是完全有效。我想在 1 行之后但在此之前使宽度恒定,高度灵活;我的意思是,如果有 1 行文本,我想让宽度灵活,高度恒定。

如果有人帮忙,我会很高兴。快乐编码!

编辑:

当我尝试删除尾随约束或减少它时,布局会像这样;

enter image description here

最佳答案

您可以通过将 xib 更改为仅使用没有任何限制的 UITextView 来实现此目的。

enter image description here

然后使消息类看起来像这样,它设置最大宽度为 300,但如果文本较少,则会缩小,并且高度会根据需要增加。

import UIKit

class MessageTextView: UITextView {

override func awakeFromNib() {
super.awakeFromNib()
layer.cornerRadius = 5
clipsToBounds = true
editable = false
scrollEnabled = false
sizeToFit()
layoutIfNeeded()
let size = sizeThatFits(CGSizeMake(contentSize.width > 300 ? 300 : contentSize.width, CGFloat.max))
bounds.size = size
}
}

关于ios - 根据 contentSize 调整自定义 UITableViewCell 中的 UITextView 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34338094/

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