Получите RowHeight каждой строки в UITableView Swift

Есть ли способ получить высоту строки для каждой строки в UITableView в swift? Пожалуйста помоги. Спасибо заранее.

Ответ 1

Swift 4:

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

Ответ 2

Я думаю, что это то, что вы ищете. Это предполагает, что "Ячейка" является идентификатором данной строки, а 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

Вам нужна ячейка для определенного IndexPath для вычисления ее границ.

Вы можете сделать это таким образом в любой из функций делегата UITableView:

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

Ответ 5

Функциональный способ:

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

Ответ 6

Если ваши строки имеют равномерную высоту, свойство rowHeight должно получить то, что вы хотите.

В противном случае UITableViewDataSource раскрывает numberOfRowsInSection и cellForRowAtIndexPath, а UITableViewCell имеет свойство rowHeight.

Если вы просто пытаетесь получить высоту представления, добавляя высоту строк, вам лучше будет служить свойство contentSize в UITableView.