UICollectionView 特殊水平流 - 多个部分

UICollectionView special horizontal flow - multiple sections

提问人:Morten Holmgaard 提问时间:7/24/2013 更新时间:7/24/2013 访问量:11808

问:

我有一个 UICollectionView,根据设备方向的不同,使用方式不同。该图像描述了我所拥有的和我需要的。

是否可以使用默认的 flowlayout 获得“根据需要水平滚动”,或者我是否需要制作 customflowlayout(感谢指南)或多个集合视图?

Collection flow layout

Objective-C iPad 视图 UI系列 ViewLayout

评论


答:

4赞 Morten Holmgaard 7/24/2013 #1

我使用 DateFlowLayout 解决了它。奇怪的名字,但它可以工作,有一些配置。

这是我给你的设置(我只在水平方向上使用它):

- (void)layoutForOrientation:(UIInterfaceOrientation)orientation {
    bool isPortrait = UIInterfaceOrientationIsPortrait(orientation);

    self.collectionView.frame = isPortrait ? CGRectMake(0, 0, 768, 180) : CGRectMake(0, 60, 246, 595);
    self.collectionView.collectionViewLayout = isPortrait ? DateFlowLayout.new : UICollectionViewFlowLayout.new;
    self.flowLayout = ((UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout);

    self.flowLayout.scrollDirection = isPortrait ? UICollectionViewScrollDirectionHorizontal : UICollectionViewScrollDirectionVertical;
    self.flowLayout.headerReferenceSize = isPortrait ? CGSizeMake(5, 30) : CGSizeMake(246, 40); //width is margin to the left of the header - must be bigger than 0 to show headers correct.
    self.flowLayout.minimumInteritemSpacing = isPortrait ? 10 : 0;
    self.flowLayout.minimumLineSpacing = isPortrait ? 17 : 7;
    self.flowLayout.sectionInset = isPortrait ? UIEdgeInsetsMake(27, 30, 25, 0) : UIEdgeInsetsMake(0, 14, 0, 0);
    //self.flowLayout.itemSize = CGSizeMake(58, 85); //You might need this
    self.collectionView.alwaysBounceVertical = isPortrait ? NO : YES;
}

评论

2赞 m.y 11/28/2013
嘿 Morten,我知道已经有一段时间了,但知道为什么我的标题粘在我的收藏视图顶部,而是在它的前面,位于中间(高度)。谢谢!
0赞 m.y 11/28/2013
很公平。那我也会做更多的事情!至少我知道这是可能的:)
4赞 TomSawyer 12/13/2015
你有swift版本吗?
0赞 Rahul Vyas 2/9/2016
也不为我编译
0赞 Morten Holmgaard 1/9/2018
关于“它不编译”——请记住,这是 2013 年的一篇文章,从那以后语言发生了很多变化。它当时确实编译了,所以通过谷歌搜索,应该可以找到更改并使用原则。