У меня есть UICollectionViewCell, который загружается из xib и хранится в свойстве, чтобы помочь с вычислением размеров ячеек для моего представления коллекции. Представление коллекции всегда имеет только один столбец, поэтому ширина ячеек зависит от телефона пользователя (iphone 5/6/6+). Xib имеет представление изображения с соотношением сторон, которое должно оставаться постоянным для всех размеров телефонов.
Проблема, с которой я сталкиваюсь, связана с этой конфигурацией. Кажется, я не могу сделать размер ячейки таким, каким хочу, на основе фиксированной ширины. Мой метод sizeForItemAtIndexPath:
выглядит так:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
self.sizingCell.frame.size.width = self.flowLayout.fullViewSectionSize.width;
[self configureCell:self.sizingCell atIndexPath:indexPath];
[self.sizingCell setNeedsLayout];
[self.sizingCell layoutIfNeeded];
CGSize size = [self.sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size;
}
Я делаю то, что я читал, я должен для расчетов динамического размера с ячейкой за пределами экрана, но проблема в том, что когда вызывается layoutIfNeeded
, я получаю исключение неудовлетворительного ограничения с моими ограничениями и дополнительным ограничением, которое устанавливает высота ячейки должна быть ее высотой, как определено в xib. Система никогда не нарушает это дополнительное ограничение по высоте, которое я не добавлял, поэтому высота ячейки всегда является неправильной высотой представления во время разработки в xib.
Могу ли я как-то удалить это постороннее ограничение, из-за которого это не работает? Есть ли здесь какой-то другой параметр, который делает то, что мне нужно? Я также пытался отключить translatesAutoResizingMaskIntoConstraints
безрезультатно. Как я могу заставить ячейку, загруженную xib, определить ее размер на основе ограничений, связанных с соотношением сторон?
Изменить:
Если вы хотите увидеть, о чем я говорю в действии, я собрал быструю версию этого в репозитории github здесь: https://github.com/klundberg/Autolayout-CollectionViewExample