gpt4 book ai didi

ios - 我有一个带有多个 UITextView 的 UICollectionViewCell 。当任何 textView 的高度增加时,我希望 UICollectionViewCell 执行相同的操作

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

我在单个 UICollectionViewCell 内有 (3) UITextViews、(1) UITextField 和 (1) UILabel >。当文本换行到第二行时,在符合 UITextViewDelegate 协议(protocol)的扩展中,我使用 textViewDidChange 函数使所有 textView 的高度发生变化:

    func textViewDidChange(_ textView: UITextView) {
let size = CGSize(width: frame.width, height: .infinity)
let estimatedSize = textView.sizeThatFits(size)
textView.constraints.forEach { (constraint) in
if constraint.firstAttribute == .height {
constraint.constant = estimatedSize.height
}
}
}

理想情况下,每当单元格中的任何 TextView 的高度增加时,我都希望增加单元格的高度。

我尝试放置:

self.frame.size.height += estimatedSize.height

ifconstraint.firstAttribute == .height 部分中,但这只会增加单元格的高度,直到它到达屏幕底部。我希望用户能够输入任意数量的文本。

每当此 textViewDidChange 更改 textView 的高度时,我是否应该使用循环来编辑单元格的高度?

我非常困惑,所以任何帮助都会很棒!提前致谢!

警告:

  • 经过大量搜索,我找到了一堆答案,展示了如何动态增加单元格的高度。但是,我不知道如何在 UICollectionView 中创建独特的单元格。如果这里最优雅的解决方案是将所有 textView、textField 和标签放入唯一的单元格中,请告诉我如何做到这一点!

最佳答案

在你的textViewDidChange方法中,为什么要将高度设置为无穷大?

self.frame.size.height +=estimatedSize.height

所以,现在您将框架的高度设置为无穷大,这就是单元格到达屏幕底部的原因。

通过使用垂直或高度约束,单元格高度可以随着构成组件的高度而改变。假设我有 2 个文本字段,一个放在另一个之上。然后我可以说,单元格顶部距第一个 TextField 顶部 10 点,类似地单元格底部距第二个 TextField 10 点。

现在,如果我更改任何 TextField 的高度,单元格的高度将会更改。

现在对于其他解决方案,如果您不使用自定义单元格,那么您将返回 UITableViewCell。您可以尝试添加 TextField 或任何您想要的组件,然后返回它。但要小心在使用前重新初始化单元格,因为 dequeReusableCell 将返回使用过的单元格。因此,如果该单元格已经配置了 TextField 并且您想要添加 textview,那么您可能需要使用新的。

关于ios - 我有一个带有多个 UITextView 的 UICollectionViewCell 。当任何 textView 的高度增加时,我希望 UICollectionViewCell 执行相同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527667/

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