鉴于此处没有答案 iOS UITableView Scroll to bottom of section 当tableview行的高度变化我正常工作 再问一遍:如何可靠地滚动到桌子的底部? 含义:表格内容的底部排成一行 在表格视图的底部
此
extension UITableView
{
func scrollToBottom(animated: Bool = true)
{
layoutSubviews() // if rowHeight UITableViewAutomaticDimension you have to force layout to get semi-correct content size height
let csh = contentSize.height
let fsh = bounds.size.height
if csh > fsh {
let offset = csh - fsh
setContentOffset(CGPointMake(0, offset), animated: animated)
}
}
}
几乎可以正常工作,但仍然低于大约150-200像素 在9.3.1和8.4.1上
让offset = csh
并且很高兴地过度展示了它所包含的内容 如果让offset = csh - fsh 其次是充满虚空的废弃空白
给出了“查看垂直弹跳”的表视图 在故事板中,它恰好在后一种情况下反弹 给予用户触摸最轻微的挑衅; - )
这是非常复杂的,非常类似于机器人
这应该很简单,对吧?正确?
答案 0 :(得分:0)
scrollToRowAtIndexPath
适用于动态高度的单元格。这是一个例子:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 100
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.numberOfLines = 0
cell.textLabel?.lineBreakMode = .ByWordWrapping
cell.textLabel?.text = [String](count: indexPath.row, repeatedValue: "Hello").joinWithSeparator(" ")
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let lastRow = tableView.numberOfRowsInSection(0)
tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: lastRow - 1, inSection: 0), atScrollPosition: .Bottom, animated: true)
}
}