¿Cómo puedo cambiar la dirección de desplazamiento en UICollectionView?

Tengo una UICollectionView en mi storyboard basada en la aplicación iOS . Cuando el dispositivo está en la orientación vertical, me gustaría que se desplazara verticalmente, y cuando esté en Landscaper, me gustaría que se desplazara horizontalmente.

En UICollectionView puedo ver el miembro scrollEnabled , pero no veo ninguna forma de configurar la dirección de desplazamiento. ¿Me he perdido algo?

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical]; 

Tenga en count también que parece prepareForLayout llamar a esto en prepareForLayout en su layout de flujo …

 @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); } 

Establezca la scrollDirection de scrollDirection de la colección scrollDirection de la vista de collectionViewLayout .

Los documentos están aquí .

Deberías probar esto:

 - (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; } } 

En 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 } } 

Felicitaciones a Mundi y Dan Rosenstark por su respuesta, aquí está la versión rápida 3.

 if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { flowLayout.scrollDirection = .horizontal } 

Haz eso en tu storyboard. Desde el inspector de identidad y selección de dirección y dar su dirección. introduzca la descripción de la imagen aquí