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

标签 ios swift uitextview uicollectionviewcell

我在单个 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/

相关文章:

ios - 渲染 60 张图像导致内存警告

ios - 在 instantiateViewControllerWithIdentifier 之后实例变量不是 nil?

json - 无法通过可编码的swift从json中获取数据

ios - 如何通过自动换行获取UITextView的内容高度

swift - 如何在不使用 UITextView 的 UILabel 中检测和创建可点击链接

ios - UITextView - addSubview - 自动布局

ios - 将数据从一个 View Controller 传递到另一个时出错

ios - 通过在 objective-c 中进行空气打印,以不同的纸张尺寸打印文档/pdf

ios swift 2 如何用 json 数据填充 uipickerview

ios - TableViewController 图像大小调整 Swift 4 Xcode 9