我将UITableView
嵌入另一个UIScrollView
内。我只希望UIScrollView
滚动,而不是UITableView
,因此我想禁用UITableView
中的滚动,以及展开contentHeight
UITableView
}一次容纳所有动态。
我将如何做到这一点?
答案 0 :(得分:11)
将tableView大小设置为与contentSize相同。
override func viewDidLayoutSubviews() {
tableView.frame.size = tableView.contentSize
}
答案 1 :(得分:10)
您需要将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));
然后,您可以在UITableView
上添加UIScrollView
,将其内容大小设置为UITableView
高度。
答案 2 :(得分:7)
将tableView滚动属性设置为false。
第一种方法:
为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()
}
}
在“界面”构建器中,将tableView的类更改为MyOwnTableView(UITableView的子类)。
设置表格视图的自动行高。
tableView.estimatedRowHeight = 60.0;
tableView.rowHeight = UITableViewAutomaticDimension;
第二种方法: 1.为tableView创建一个具有任何值的高度约束,并连接设置tableView高度的IBOutlet。
在重新加载数据后,将高度约束的常量设置为tableView.contentSize.height。
self.tableViewHeight.constant = self.tableView.contentSize.height
答案 3 :(得分:5)
基本上,tableview的内容大小就是您所需要的。
将tableview滚动设置为false
因为我们不想要骂人行为。
获取tableview的高度限制的参考。
设置tableViewHeightConstraint.constant = tableView.contentSize.height
确保,tableview的顶部,底部,前导和尾随约束都在原位。
答案 4 :(得分:3)
答案 5 :(得分:1)
UITableView
滚动到NO
其次,为表格视图创建height constraint
,并在致电[UITableView reloadData]
后更改height constraint
tableViewHeightConstraint.constant = numberOfRows * heightOfEachRow;
答案 6 :(得分:0)
UITableView是一个滚动视图。虽然您不应该嵌套UIScrollviews,但您可以禁用滚动表视图。
答案 7 :(得分:0)
虽然使用固定内容的tableview作为scrollview中的子视图来完成这个非常简单,但是你究竟想要完成什么呢?上下固定内容的动态单元格?永久显示的内容,中间有滑动部分?
也许更简洁的设计是使用带有表头和页脚的单个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
操作滚动行为的另一个选择是检查委托scrollView shouldStartScrolling或类似方法中的tableview或scrollview,因为这将允许更多的UI控件灵活性