2013-10-14 3 views
1

Я пытаюсь авторизовать ячейку таблицы с автозагрузкой. Но, похоже, TableView игнорирует ограничения по высоте.AutoLayout + UITableViewCell + Высота (не работает)

Я знаю, что «tableView: heightForRowAtIndexPath:» может это сделать.

Но как избежать использования жесткого кодирования высот? Есть ли другие способы?

снимок экрана 1:

https://dl.dropbox.com/s/3spak2koe2s6jif/1.png

снимок экрана 2:

[https://dl.dropbox.com/s/dnumxqv28bjh939/2.png]2

ответ

2
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static UITableViewCell *cell; 
    if (cell == nil) { 
     cell = [tableView dequeueReusableCellWithIdentifier: @"YourCell"]; 
    } 
    [self configureCell:cell forIndexPath:indexPath]; // making text assignment and so on 
    return [cell.contentView systemLayoutSizeFittingSize: UILayoutFittingCompressedSize].height + 1.0f; 
} 
+0

Интересное решение и это сработало. – RuslTG

+0

Это, как правило, очень плохая идея. 'tableView: heightForRowAtIndexPath:' вызывается для каждой отдельной строки в таблицеView. Если в таблицеView будет больше пары ячеек, это будет иметь огромное влияние на производительность. –

+0

Matthias Bauch, это решение просто изменило порядок создания ячеек. Вместо создания ячейки в «tableView: cellForRowAtIndexPath:» она создала ячейку в «tableView: heightForRowAtIndexPath:» и повторно использовалась в «tableView: cellForRowAtIndexPath:». Так что нечего волноваться. – RuslTG

Смежные вопросы