5

是否可以使NSCollectionView渲染中的项目自上而下然后从左到右而不是从左到右然后自上而下?为了直观地描述它,项目当前按以下顺序呈现:

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

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

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

谢谢。

4

2 回答 2

0

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

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

 flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;

flowLayout 是对集合视图初始化时使用的 UICollectionViewFlowLayout 对象的引用(我假设您已经这样做了)。

于 2012-12-14T17:38:11.643 回答
0

是的,有一点需要注意。

如果将Scroll Direction设置为Horizo​​ntalNSCollectionView将导致collection view 中的项目以列而不是行布局。

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

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

NSCollectionView 滚动方向设置

您还可以通过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 ] 
于 2017-05-04T01:53:38.007 回答