使UITableView不可滚动并调整高度以容纳所有单元格

All*_*len 36 uitableview ios

我正在嵌入UITableView另一个内部UIScrollView.我只想要UIScrollView滚动,而不是UITableView,所以我想禁用滚动UITableView,以及扩展contentHeightUITableView一次容纳所有动态.

我该怎么做呢?

Lea*_*ner 13

将tableView滚动属性设置为false。

第一种方法:

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

         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()
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在“界面”构建器中,将tableView的类更改为MyOwnTableView(子类UITableView)。

  3. 设置表格视图的自动行高。

        tableView.estimatedRowHeight = 60.0;
        tableView.rowHeight = UITableViewAutomaticDimension;
    
    Run Code Online (Sandbox Code Playgroud)

第二种方法: 1.为tableView创建一个具有任何值的高度约束,并连接设置tableView高度的IBOutlet。

  1. 重新加载数据后,将高度约束的常量设置为tableView.contentSize.height。

    self.tableViewHeight.constant = self.tableView.contentSize.height
    
    Run Code Online (Sandbox Code Playgroud)


Huy*_* Le 12

将tableView大小设置为与contentSize相等.

override func viewDidLayoutSubviews() {
    tableView.frame.size = tableView.contentSize
}
Run Code Online (Sandbox Code Playgroud)

  • 但这不会增加滚动视图的内容大小.内容大小保持不变. (2认同)

小智 11

您需要将UITableView滚动设置为false,

tableview.scrollEnabled = false;

tableview.frame = CGRectMake(tableview.frame.origin.x, tableview.frame.origin.y, tableview.frame.size.width, tableview.frame.size.height+(resultArray.count*HEIGHT_OF_CELL));
Run Code Online (Sandbox Code Playgroud)

然后你就可以添加UITableViewUIScrollView通过设置它的内容大小UITableView的高度.

  • 细胞的动态高度怎么样? (3认同)

pre*_*tam 5

基本上,tableview的内容大小就是您所需要的。

  1. 将tableview滚动设置为,false因为我们不想拖累行为。

  2. 获取tableview的高度约束的参考。

  3. tableViewHeightConstraint.constant = tableView.contentSize.height

确保tableview的顶部,底部,前导和尾随约束均在适当位置。


Duy*_*Hoa 3

  1. 让你的表格视图框架覆盖所有可能的行 - >表格视图不滚动
  2. 设置滚动视图的 contentSize = tableView 的大小。