Нарушение ограничений CollectionView - PullRequest
0 голосов
/ 17 октября 2019

У меня есть collectionView, и каждая ячейка содержит tableView внутри него. Предполагается, что серая часть - это collectionView. enter image description here

Но когда я запускаю приложение, я получаю что-то вроде этого enter image description here

Как вы можете ясно видеть, представленное табличное представление не соответствует установленным ограничениям. Я получаю следующие ошибки из консоли:

The behavior of the UICollectionViewFlowLayout is not defined because:
the item height must be less than the height of the UICollectionView minus the section insets top and

bottom values, minus the content insets top and bottom values.
The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7f80fd28e420>, and it 

is attached to <UICollectionView: 0x7f80fc08f800; frame = (0 114; 375 664); clipsToBounds = YES;
autoresize = RM+BM; gestureRecognizers = <NSArray: 0x600000d6c4b0>; layer = <CALayer: 0x6000003beee0>;
contentOffset: {0, 0}; contentSize: {0, 0}; adjustedContentInset: {0, 0, 0, 0};

layout: <UICollectionViewFlowLayout: 0x7f80fd28e420>; dataSource: <BizTiz.EventDetailController: 0x7f80fa0b7800>>.

Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.

Как это исправить? Также, когда я помещаю этот collectionView в стек, возникает небольшая задержка. Я предполагаю, что это может быть связано с предыдущей ошибкой.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Пожалуйста, установите макет в UICollectionViewDelegateFlowLayout.

   func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: <cell_width>, height: <cell_height>)
    }
0 голосов
/ 17 октября 2019

Понял мою ошибку ....

   func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: view.frame.width, height: view.frame.height - 114)
    }

Я устанавливал высоту как view.frame.height. Я забыл вычесть дополнительную высоту наверху.

...