UITableViewCell не работает, если я не добавляю представления в представление контейнера, а не contentView

Фон

Это ссылка на этот пост (TLDR; высоты UITableViewCell должны рассчитываться автоматически, если вы правильно используете Auto Layout).

проблема

Если я добавлю мнения непосредственно в contentViewЯ продолжаю получать эту ошибку:

018-11-25 02:17:33.514881+0200 [78571:855018] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x2825f0be0 V:|-(76)-[.TTRLabel:0x10e7c7e40'DRIVER']   (active, names: '|':UITableViewCellContentView:0x10e7cb700 )>",
    "<NSLayoutConstraint:0x2825f0b90 V:[.TTRLabel:0x10e7c7e40'DRIVER']-(10)-[.TTRLabel:0x10e7c8420'TIME']   (active)>",
    "<NSLayoutConstraint:0x2825f1c70 V:[.TTRLabel:0x10e7c8420'TIME']-(10)-[.TTRLabel:0x10e7c8a00'ADDRESS']   (active)>",
    "<NSLayoutConstraint:0x2825f1ea0 .TTRLabel:0x10e7c96a0' new office '.bottom == UITableViewCellContentView:0x10e7cb700.bottom - 26   (active)>",
    "<NSLayoutConstraint:0x2825f1f40 .TTRLabel:0x10e7c96a0' new office '.lastBaseline == .TTRLabel:0x10e7c8a00'ADDRESS'.lastBaseline   (active)>",
    "<NSLayoutConstraint:0x2825f34d0 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x10e7cb700.height == 44   (active)>"
)

Моя проблема с этой частью

<NSLayoutConstraint:0x2825f34d0 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x10e7cb700.height == 44   (active)>"

Он настаивает на том, что высота tableViewCell - всего лишь стандарт 44 (и, следовательно, игнорирует всю мою работу по автоматическому размещению)!

Единственное, что решает проблему, это запустить

self.contentView.autoPinEdgesToSuperviewEdges()

что странно, потому что это нигде не задокументировано и не имеет смысла в общей схеме вещей.

Вот весь код UITableViewCell для справки.

0 ответов

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {

}

// Добавляю этот код, у меня работает, мой вопрос по iOS 10

После использования этой линии

self.contentView.autoPinEdgesToSuperviewEdges()

какое-то время мы поняли, что таблицы прокрутки с большим количеством ячеек дребезжали, и процессор процессора достиг 100%.

Поэтому мы вернулись и удалили вышеприведенные строки, исправили проблемы с автопоставкой, а затем все снова заработало.

Таким образом, проблема заключалась в простых проблемах с автоматической компоновкой, а высота клетки была красной селедкой.

TL; DR: высота UITableViewCell рассчитывается автоматически, если вы правильно используете Auto Layout.

Другие вопросы по тегам