iOS7 UICollectionView в горизонтальном направлении прокрутки не работает

Тот же код для iOS6 работал нормально.

По какой-то причине при обновлении до iOS7 и использовании этого макета

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];

    [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
 /
    CGSize s = CGSizeMake(self.collectionView.frame.size.height,self.collectionView.frame.size.height);

    [flowLayout setItemSize:s];

методы делегата представления коллекции не вызываются. Я изменил направление прокрутки на вертикальное, вызываются все делегаты, я изменил размер кадра представления коллекции, чтобы он был больше, и вызываются методы делегата. Я подозреваю, что представление коллекции по какой-то причине смещено внутри представления содержимого, в результате чего ячейки находятся за пределами экрана, а делегаты не вызываются. При увеличении кадра (в горизонтальном или вертикальном режиме) представление коллекции «заполняет» представление прокрутки, и вызываются делегаты

представление коллекции нормального размера (ячейки и делегаты не вызываются)

введите здесь описание изображения

увеличил рамку на 50 пикселей

CGRect r = CGRectInset(self.filmStripRect, 0, -50);

появляются ячейки и вызываются делегаты

введите здесь описание изображения


person Avner Barr    schedule 23.09.2013    source источник
comment
Вы тоже установили направление прокрутки в раскадровке?   -  person Nick Terry    schedule 23.09.2013
comment
Не использовать раскадровку   -  person Avner Barr    schedule 23.09.2013
comment
Ах. У вас есть ячейка .itemSize, установленная так же, как размер вашей коллекции. Может быть, это все? Каждая ячейка будет иметь тот же размер, что и вся ваша коллекция. Протестируйте, просто сделав CGSize s 20,20.   -  person Nick Terry    schedule 23.09.2013
comment
это как-то связано с этим в uicollectionview вызывает необъяснимое смещение содержимого"> stackoverflow.com/questions/13780138/   -  person Avner Barr    schedule 23.09.2013


Ответы (3)


вам также следует проверить их, чтобы горизонтальная прокрутка работала:

person Gulz    schedule 22.12.2016

мы должны создать новый CollectionViewLayout и передать его collectionView:

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
self.collectionView.collectionViewLayout = flowLayout;
person Wayne Chen    schedule 05.05.2017
comment
Программное изменение направления прокрутки СУЩЕСТВУЮЩЕГО макета потока не сработало. Создание нового было правильным решением для меня. Спасибо - person anders; 12.04.2018

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[CollectionData setCollectionViewLayout:flowLayout];

Если вы используете раскадровку, выберите представление коллекции, перейдите к инспектору атрибутов и установите горизонтальное направление прокрутки.

person Preetha    schedule 04.04.2016