使NSCollectionView垂直呈现项目

时间:2012-12-14 16:54:11

标签: cocoa monomac nscollectionview

是否可以将项目放在NSCollectionView自上而下,然后左右,而不是左右,然后自上而下?要以可视方式描绘它,项目当前按以下顺序呈现:

[ 1 ] [ 2 ] [ 3 ]
[ 4 ] [ 5 ] [ 6 ]

我希望它们看起来像这样:

[ 1 ] [ 3 ] [ 5 ]
[ 2 ] [ 4 ] [ 6 ]

感谢。

2 个答案:

答案 0 :(得分:0)

项目的显示顺序取决于它们保存数据的数组中的顺序。如果将滚动更改为水平,您将获得所需的顺序,但如果您希望滚动保持垂直,则需要更改数组中对象的顺序。

要使滚动水平,请执行以下操作:

 flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;

flowLayout是对初始化集合视图时使用的UICollectionViewFlowLayout对象的引用(我假设你已经完成了)。

答案 1 :(得分:0)

是的,但有一点需要注意。

如果将NSCollectionView滚动方向设置为水平,则会导致集合视图中的项目按行而不是行排列。

[ 1 ] [ 5 ] [ 9 ]
[ 2 ] [ 6 ]   |
[ 3 ] [ 7 ]   |
[ 4 ] [ 8 ]   V

要在Interface Builder 8中执行此操作,请选择集合视图,打开 Attributes Inspector ,然后从弹出按钮中选择Horizo​​ntal:

NSCollectionView Scroll Direction settings

通过在集合视图的布局上设置scrollDirection属性,您还可以在代码中实现相同的效果。注:集合视图的布局需要为NSCollectionViewFlowLayout

NSCollectionViewFlowLayout *flowLayout = [NSCollectionViewFlowLayout alloc] init];
flowLayout.scrollDirection = NSCollectionViewScrollDirectionHorizontal;

NSCollectionView *collectionView = [NSCollectionView alloc] init];
collectionView.collectionViewLayout = flowLayout;

需要注意的是,这对于您对部分的预期效果不起作用。您可能希望在视图中展开各个部分,向下流动屏幕,然后展示项目。列嵌套在每个部分中。 情况并非如此。截面将成为垂直分隔符并拉伸视图的高度,并在屏幕上布置以及类似的项目:

⌈s⌉ [ 1 ]  ⌈s⌉ [ 1 ] [ 5 ] 
|s| [ 2 ]  |s| [ 2 ] [ 6 ] 
|s| [ 3 ]  |s| [ 3 ] 
⌊s⌋        ⌊s⌋ [ 4 ]