gpt4 book ai didi

ios - 调整 UITableView 的大小以适应内容

转载 作者:IT老高 更新时间:2023-10-28 12:17:57 24 4
gpt4 key购买 nike

我正在创建一个应用程序,该应用程序将在 UILabel 中有一个问题,并在 UITableView 中显示一个多项选择答案,每行显示一个多项选择。问题和答案会有所不同,所以我需要这个 UITableView 的高度是动态的。

我想为该表找到一个 sizeToFit 解决方法。表格的框架设置为其所有内容的高度。

谁能建议我如何实现这一目标?

最佳答案

无需 KVO、DispatchQueue 或自行设置约束的 Swift 5 和 4.2 解决方案。

此解决方案基于 Gulz's answer .

1) 创建UITableView的子类:

import UIKit

final class ContentSizedTableView: UITableView {
override var contentSize:CGSize {
didSet {
invalidateIntrinsicContentSize()
}
}

override var intrinsicContentSize: CGSize {
layoutIfNeeded()
return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
}
}

2) 将 UITableView 添加到您的布局并在所有方面设置约束。将它的类设置为ContentSizedTableView

3) 您应该会看到一些错误,因为 Storyboard 没有考虑我们的子类的 intrinsicContentSize。通过打开大小检查器并将intrinsicContentSize 覆盖为占位符值来解决此问题。这是设计时的替代。在运行时它将使用我们的 ContentSizedTableView 类中的覆盖


更新:更改了 Swift 4.2 的代码。如果您使用的是旧版本,请使用 UIViewNoIntrinsicMetric 而不是 UIView.noIntrinsicMetric

关于ios - 调整 UITableView 的大小以适应内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595118/

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