微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据其中的单元格自动设置 UITableView 的高度?

如何解决如何根据其中的单元格自动设置 UITableView 的高度?

我在屏幕中间有一个 UITableView,我想根据其中的单元格数量调整 tableview 的高度,其中数据是从 API 获取的。换句话说,使 tableview 的高度为 x * height of each cell

我环顾四周,发现您可以根据其中的内容自动调整单元格高度,但这不是我想要的(它们的大小都相同)。

有没有办法做到这一点?

解决方法

是否只想使用 UITableView
您可以使用 UIStackView 来实现它。如果您需要添加滚动行为 - 这也是可能的,谷歌堆栈视图 + 滚动。

在动态高度表视图自定义类下方。

class DynamicHeightTableView: UITableView {

    // By default UITableView doesn't have `intrinsicContentSize`
    // Overriden in order to make it work with autolayout system
    override var intrinsicContentSize: CGSize {
        layoutIfNeeded()

        return contentSize
    }

    override var contentSize: CGSize {
        didSet {
            invalidateIntrinsicContentSize()
        }
    }

    override func reloadData() {
        super.reloadData()

        invalidateIntrinsicContentSize()
    }
}
,

尝试以下操作:

  1. 像这样在 for i in range(1,7): 'df'+i = pd.read_csv(r'C:\Users\siddhn\Desktop\phone'+str(i)+'.csv',engine = 'python') 子类中声明一个变量。
UIViewController
  1. private var contentSizeObservation: NSKeyValueObservation? 内或设置 viewDidLoad() 时,开始观察 contentSize 的变化。
myTableView
  1. 不要忘记在 contentSizeObservation = myTableView.observe(\.contentSize,options: .new,changeHandler: { [weak self] (tv,_) in guard let self = self else { return } self.myTableViewHeightConstraint.constant = tv.contentSize.height }) 调用中清理它 -
deinit

这种方法将确保您的 deinit { contentSizeObservation?.invalidate() } 的高度始终与其内容一样大。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。