Как изменить направление прокрутки в UICollectionView?
У меня есть UICollectionView в моем приложении iOS.
Когда устройство находится в портретной ориентации, мне бы хотелось, чтобы он прокручивался вертикально, и когда он в Landscaper, я бы хотел, чтобы он прокручивался по горизонтали.
В UICollectionView я вижу элемент scrollEnabled, но я не вижу способа установить направление прокрутки. Я что-то пропустил?
Ответы
Ответ 1
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
Отметьте также, что это нормально, если вы назовете это в prepareForLayout
в макете потока...
@interface LayoutHorizontalThings : UICollectionViewFlowLayout
@end
@implementation LayoutHorizontalBooks
-(void)prepareLayout
{
[super prepareLayout];
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.minimumInteritemSpacing = 0;
self.minimumLineSpacing = 0;
self.itemSize = CGSizeMake(110,130);
self.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
}
Ответ 2
Установите scrollDirection
в виде коллекции collectionViewLayout
.
Документы здесь.
Ответ 3
Вы должны попробовать следующее:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)[self.collectionView collectionViewLayout];
if ((toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)){
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
}
else{
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
}
}
В Swift:
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
var layout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
if ((toInterfaceOrientation == UIInterfaceOrientation.LandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientation.LandscapeRight)){
layout.scrollDirection = UICollectionViewScrollDirection.Vertical
}
else{
layout.scrollDirection = UICollectionViewScrollDirection.Horizontal
}
}
Ответ 4
Престижность Мунди и Дэн Розенштарк за их ответ, вот быстрая версия 3.
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayout.scrollDirection = .horizontal
}
Ответ 5
Сделайте это в своем раскадровке. От инспектора личности и выберите направление и укажите свое направление.
![введите описание изображения здесь]()
Ответ 6
Swift 4
if let layout = collectionViewObj.collectionViewLayout as? UICollectionViewFlowLayout {
layout.scrollDirection = .vertical // .horizontal
}