Почему AutoLayout не заботится о моем UICollectionView

Я создал очень простой образец приложения (исходный код на github), используя файл UICollectionView.

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

Я думал, что все необходимые ограничения AutoLayout на месте. Я знаю, что могу реализовать collectionView:layout:sizeForItemAtIndexPath:, но моя цель — максимально использовать AutoLayout (просто чтобы лучше понять AutoLayout).

Что мне здесь не хватает?


person below    schedule 07.01.2013    source источник


Ответы (1)


Вы можете использовать автомакет, чтобы установить положение и размер представления коллекции. И вы можете использовать autolayout, чтобы установить положение и размер подвидов внутри каждой ячейки. Но вы не можете использовать autolayout для управления положением и размером ячеек. Вы должны использовать объект макета представления коллекции, чтобы установить положение и размер каждой ячейки представления коллекции. Если вы хотите, чтобы ячейки меняли размер при изменении ориентации интерфейса, вы должны обновить объект макета, чтобы сообщить о новом размере и сделать макет недействительным.

person rob mayoff    schedule 11.07.2013
comment
Начиная с iOS 8 можно изменить размер ячеек. Макет создаст экземпляр вашей ячейки, когда это необходимо, и вы можете использовать либо ограничения автомакета, либо переопределить sizeThatFits:. В макете должно быть установлено свойство предполагаемого размера элемента. - person fatuhoku; 24.08.2014