2017-02-22 24 views
0

Я пытаюсь установить высоту last tableView строка, отличную от остальных. Вместо того, чтобы создавать новую ячейку и т. Д., Я хочу «вырезать» 10 пикселей с высоты этой ячейки. Поскольку я установил автоматический размер для высоты, я не могу использовать постоянное значение.UITableViewAutomaticDimension-10.0

Вот как это выглядит:

tableView.estimatedRowHeight = 54.0 
return UITableViewAutomaticDimension 

Я хочу что-то вроде этого, но это не работает:

if isLastLineBla { 
    tableView.estimatedRowHeight = 44.0 
    return UITableViewAutomaticDimension-10.0 
} else { ... 

ответ

0

Я надеюсь, что у вас есть dataSource для вашего tableView и возвращение dataSource.count в ваш numberOfRowsAt способ.

Теперь реализовать метод heightForRowAt вернуть правильное значение, как показано ниже:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if lastRow { 
     return 44 
    }else{ 
     return UITableViewAutomaticDimension 
    } 
} 

И не устанавливайте tableView.estimatedRowHeight = 44.0 в каждом месте, единственное место, где нужно установить в вашем методе viewDidLoad.

+0

Хорошо, спасибо. Установка его на 44 не будет работать для меня, потому что в ней есть метка, которая может варьироваться в зависимости от количества линий/высоты. Поэтому я хочу иметь высоту UITableViewAutomaticDimension, но удалять 10px этой высоты. – suppe

0

Думайте, что у вас проблемы с тем, как работает табличный вид. В представлении таблицы реализована форма ленивой загрузки, так что в памяти не так много просмотров.

Попробуйте использовать методы делегата представления таблицы, чтобы «сообщать» правильные высоты, основываясь на индексе ячейки.

https://developer.apple.com/reference/uikit/uitableviewdelegate/1614998-tableview

+0

Это то, что я делаю прямо сейчас? (делегат heightForRowAt) – suppe

+0

В этом методе сделать последнюю ячейку 10px меньшей. Вы не можете позвонить, если index.row == collection.count - 1 {return size - 10} – MarcJames

+0

Ах, извините, «isLastLineBla» был предназначен только для сокращения кода. Это именно то, что я пытаюсь сделать. ;-) Но проблема в том, что я не могу сделать что-то вроде: UITableViewAutomaticDimension - 1 – suppe

0

То, что вы должны сделать, это установить флаг на вашей камере, называется isLast или что-то подобное. Затем, возвращая свои ячейки из делегата представления таблицы, вы должны установить этот флаг в true, если это действительно последняя ячейка вашей таблицы.

Затем на вашей соте вы сможете изменить свои ограничения на основе этого флага, чтобы ячейка имела на 10 пунктов меньше, чем остальные ячейки. Я не могу точно сказать, какое ограничение и как его изменить, поскольку я понятия не имею, как выглядит ваша ячейка.

+0

Похоже на это: https://ibb.co/muem3v – suppe

+0

Ну, я имел в виду, как выглядят ваши ограничения. Думаю, у метки слева есть нижнее ограничение для вашей ячейки? –

+0

Да, из-за автоматического измерения – suppe