获取 UITableView Swift 中每一行的 RowHeight

Posted

技术标签:

【中文标题】获取 UITableView Swift 中每一行的 RowHeight【英文标题】:Get RowHeight of each row in UITableView Swift 【发布时间】:2015-07-01 01:13:03 【问题描述】:

有没有办法快速获取UITableView 中每一行的行高?请帮忙。提前致谢。

【问题讨论】:

你想什么时候得到rowHeight?你用过自动布局吗? 是的,我需要行高。我正在使用自动布局 为什么要获取rowHeight? 我的行高是动态的。我需要根据条件更改行高。所以我需要行高。 也许您应该使用自调整大小的单元格:appcoda.com/self-sizing-cells 【参考方案1】:

斯威夫特 4:

var height: CGFloat = 0
for cell in tableView.visibleCells 
    height += cell.bounds.height

【讨论】:

【参考方案2】:

我认为这就是您要寻找的。这假定 "Cell" 是给定行的标识符,而 indexPath 是相关行的索引。

let row = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)as! UITableViewCell

let height = row.bounds.height

【讨论】:

但如果我使用自动布局?因为你让我得到我在故事板中设置的高度【参考方案3】:

单元格仅在可见时存在,并且您可以通过表格视图的visibleCells() 方法访问它们。

for obj in tableView.visibleCells() 
    if let cell = obj as? UITableViewCell 
        let height = CGRectGetHeight( cell.bounds )
    

【讨论】:

【参考方案4】:

功能方式:

 let sum = tableView.visibleCells.map(  $0.bounds.height  ).reduce(0,+)
 print("Height:\(sum)")

【讨论】:

【参考方案5】:

您需要某个IndexPath 的单元格来计算其边界。

您可以在UITableView 的任何委托函数中这样做:

let row = tableView.cellForRow(at: indexPath)
let cellHeight = (row?.bounds.height)!
let cellWidth = (row?.bounds.width)!

【讨论】:

以上是关于获取 UITableView Swift 中每一行的 RowHeight的主要内容,如果未能解决你的问题,请参考以下文章

获取UITableView每一行的高度

如何访问 UITableView 中每一行的照片相册

在 SWIFT 中自定义 UITableview 的第一行

Swift 3.0 无法从 UITableView 中删除一行

Swift - 当最后一行不可见时,如何对 UITableView 的最后一行执行特定操作?

在 Swift 中从 UITableView 中删除一行?