是否可以使NSCollectionView
渲染中的项目自上而下然后从左到右而不是从左到右然后自上而下?为了直观地描述它,项目当前按以下顺序呈现:
[ 1 ] [ 2 ] [ 3 ]
[ 4 ] [ 5 ] [ 6 ]
我希望它们看起来像这样:
[ 1 ] [ 3 ] [ 5 ]
[ 2 ] [ 4 ] [ 6 ]
谢谢。
是否可以使NSCollectionView
渲染中的项目自上而下然后从左到右而不是从左到右然后自上而下?为了直观地描述它,项目当前按以下顺序呈现:
[ 1 ] [ 2 ] [ 3 ]
[ 4 ] [ 5 ] [ 6 ]
我希望它们看起来像这样:
[ 1 ] [ 3 ] [ 5 ]
[ 2 ] [ 4 ] [ 6 ]
谢谢。
项目的显示顺序由它们在保存数据的数组中的顺序决定。如果将滚动更改为水平,您将获得所需的顺序,但如果您希望滚动保持垂直,则需要更改数组中对象的顺序。
要使滚动水平,请执行以下操作:
flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flowLayout 是对集合视图初始化时使用的 UICollectionViewFlowLayout 对象的引用(我假设您已经这样做了)。
是的,有一点需要注意。
如果将Scroll Direction设置为HorizontalNSCollectionView
将导致collection view 中的项目以列而不是行布局。
[ 1 ] [ 5 ] [ 9 ]
[ 2 ] [ 6 ] |
[ 3 ] [ 7 ] |
[ 4 ] [ 8 ] V
要在 Interface Builder 8 中执行此操作,请选择集合视图,打开Attributes Inspector并从弹出按钮中选择 Horizontal:
您还可以通过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 ]