我有一个水平的 UIScrollView ,它已添加为自定义 UITableViewCell 中的子视图。在某些情况下,我想更改通过执行此代码获得的scrollview内容偏移量
cell.horizontalScrollView.setContentOffset(CGPoint(x: 300, y: cell.horizontalScrollView.contentOffset.y), animated: true)
在UITableView
的{{1}}函数中的和cellForRowAtIndexPath
都在需要编程时被调用。
问题是,这第一次不起作用。即
首次加载表格视图时,根据代码,可见单元格内的滚动视图不会滚动。其偏移量仅为(0,0)。 ---- (这是问题!)
但是在那之后,当我滚动tableview.reloadData()
时,新单元格(重用的单元格)就会更新,滚动视图的位置也会更改。 (我从一开始就需要!)
因此,我想以编程方式更改tableView
的初始偏移量(位置)。我该如何实现?
答案 0 :(得分:1)
最后,我坐了几天后找到了解决方案!
在为layoutIfNeeded
设置UITableViewCell
之前,必须在cellForRowAtIndexPath
方法内为contentOffset
实现UIScrollView
。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.layoutIfNeeded()
cell.horizontalScrollView.setContentOffset(CGPoint(x: 300, y: cell.horizontalScrollView.contentOffset.y), animated: false)
return cell
}
答案 1 :(得分:0)
实现此目的的最佳方法是对单元格进行子类化,然后在layoutSubviews
方法中设置内容偏移量。