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

2020/12/16 12:11 · ios ·  · 0评论

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

我将如何去做呢?

将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()
        }
    }
    
  2. 在“接口”构建器中,将tableView的类更改为MyOwnTableView(子类UITableView)。

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

        tableView.estimatedRowHeight = 60.0;
        tableView.rowHeight = UITableViewAutomaticDimension;
    

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

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

    self.tableViewHeight.constant = self.tableView.contentSize.height
    

将tableView的大小设置为与contentSize相等。

override func viewDidLayoutSubviews() {
    tableView.frame.size = tableView.contentSize
}

您需要将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));

然后,您可以通过将内容大小设置为高度来添加UITableViewon UIScrollViewUITableView

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

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

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

  3. tableViewHeightConstraint.constant = tableView.contentSize.height

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

  1. 使您的表格视图框架覆盖所有行->表格视图无滚动
  2. 设置您的scrollview的contentSize = tableViews的大小。
  • 首先,您需要设置UITableView滚动到NO
  • 其次,height constraint为表格视图创建一个,并在调用后[UITableView reloadData]更改height constraint

    tableViewHeightConstraint.constant = numberOfRows * heightOfEachRow;
    

UITableView是滚动视图。虽然您不应该嵌套UIScrollviews,但是可以禁用表视图的滚动。

使用固定内容表视图作为滚动视图中的子视图来完成此操作非常简单,但是您到底想实现什么?上方和下方固定内容的动态单元格?永久显示内容,中间有一个滑动部分?

也许更干净的设计是使用带有表头和页脚的单个UITableView,或者使用UITableViewStyleGrouped与UITableViewStylePlain提供的自动行为的节头和节脚。

也就是说,其他答案似乎可以构成一个不错的解决方案:

Set scroll enabled false on table view
Set tableview content size to sum of all cell sizes
Set tableview frame to content size
Adjust scroll view frame to account for dynamic table size if necessary
Add table view to scroll view amidst other content

操纵滚动行为的另一种方法是检查委托中的tableview或scrollview scrollView shouldStartScrolling或类似方法,因为这将使UI控件具有更大的灵活性。

本文地址:http://ios.askforanswer.com/shiuitableviewbukegundongbingdiaozhenggaoduyirongnasuoyoudanyuange.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!