动态调整UITableView的大小,该大小将显示为不可滚动的内容列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态调整UITableView的大小,该大小将显示为不可滚动的内容列表相关的知识,希望对你有一定的参考价值。

我正在使用Swift 3.0中的一个项目,它在UIScrollView中有一个UITableView,它已经设置了它的约束。

要求是显示从这个UITableView中的数组返回的歌曲列表,但是这个UITableView的大小应该根据数组的大小动态排列,所以我不需要滚动UITableView,因为我可以看到所有UITableView中的歌曲(这个UITableView在我的scrollView中,所以我可以使用我的scrollView在列表中向上或向下移动)。

我怎么做到这一点?

答案

您可以根据内容更改tableview的高度。

var frame = tableView.frame
frame.size.height = tableView.contentSize.height
tableView.frame = frame

如果您正在为tableview高度使用autolayout create outlet并将tableview内容大小分配给其常量。

tableviewHeightConstraint.constant = tableview.contentSize.height
另一答案

1.为tableView创建一个子类并覆盖intrinsicContentSize。

         class MyOwnTableView: UITableView {
        override var intrinsicContentSize: CGSize {
            self.layoutIfNeeded()
            return self.contentSize
        }

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

        override func reloadData() {
            super.reloadData()
            self.invalidateIntrinsicContentSize()
        }
    }

2.在Interface构建器中,将tableView的类更改为MyOwnTableView(UITableView的子类)。

  1. 为表视图设置自动行高。 tableView.estimatedRowHeight = 60.0 tableView.rowHeight = UITableViewAutomaticDimension

以上是关于动态调整UITableView的大小,该大小将显示为不可滚动的内容列表的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 UITableView 滚动动态调整 UITableViewCell 的大小?

自动布局动态大小 uitableview 单元格的最佳方法是啥

如何将 UITableView 的高度调整为内容大小的高度?

在 UITableView 页脚中动态设置和调整标签大小

在 UITableView 上方调整 UIView 的大小

UITableView 估计行高动态类型