ios 如何在UICollectionView中更改滚动方向?

nkcskrwz  于 12个月前  发布在  iOS
关注(0)|答案(6)|浏览(122)

我有一个UICollectionView在我的故事板基于iOS应用程序。当设备是在纵向方向,我想它垂直滚动,当它在景观设计师我想它水平滚动。
在UICollectionView中,我可以看到 scrollEnabled 成员,但我看不到设置滚动方向的方法。我错过了什么吗?

3mpgtkmj

3mpgtkmj1#

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

bvn4nwqk2#

Swift 4.2

if let layout = collectionViewObj.collectionViewLayout as? UICollectionViewFlowLayout {
        layout.scrollDirection = .vertical  // .horizontal
    }
mfpqipee

mfpqipee3#

设置集合视图的collectionViewLayoutscrollDirection
医生来了。

a2mppw5e

a2mppw5e4#

你应该试试这个:

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

}
k5hmc34c

k5hmc34c5#

感谢Mundi和Dan Rosenstark的回答,这是Swift 4.2版本。

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

xam8gpfp6#

在你的故事板里这样做。从身份检查器中选择滚动方向并选择您的方向。

相关问题