NSCollectionViewGridLayout在单行中具有可调整大小的集合项,这些项可保持长宽比?

时间:2019-05-26 13:50:22

标签: objective-c aspect-ratio nscollectionview

我有一个NSCollectionView,它使用NSCollectionViewGridLayout创建一行收集视图项。该行可以包含一个或多个项目,并且可以水平滚动,即一行,无限制的列(每列一项)。

集合视图项的最小尺寸为240x160,宽高比限制为3:2(宽度是高度的1.5倍)。没有最大大小。

所有间距/插入项都设置为零,以便使各个项目在集合视图的左侧开始水平相邻(尽管理想情况下,如果总宽度,我希望将这些项目水平居中项的宽度小于集合视图的宽度。)

集合视图位于拆分视图的上半部分。上下拖动分隔线时,我想在保持宽高比的同时调整集合视图项目的大小。问题是长宽比约束与前导/尾随约束发生冲突,并导致约束异常。

1)我尝试过从集合项视图中删除前导/尾随约束,但随后这些项未一起冲洗。我不能在项目之间留有空隙,也不能使项目彼此重叠。 2)我尝试过删除长宽比,然后正确调整项目的大小,但不保持其长宽比。 3)我还尝试过在集合视图宽度上设置长宽比,以使其等于集合的高度乘以项目数乘以长宽比,但无法使其正常工作(而且似乎有点乱)。我也尝试了一个自定义布局对象,但是遇到了不同的错误。 3)我正在考虑但未尝试过,在拖动开始时取消激活宽高比约束,并在拖动结束时重新接受约束,但不确定是否可行(这似乎有点hack- )。

// setting up the grid layout
NSCollectionViewGridLayout* layout = [[[NSCollectionViewGridLayout alloc] init] autorelease];
layout.minimumInteritemSpacing = 0.0;
layout.minimumLineSpacing = 0.0;
layout.margins = NSEdgeInsetsMake(0.0, 0.0, 0.0, 0.0);
layout.maximumNumberOfRows = 1;
layout.maximumNumberOfColumns = 0;
layout.minimumItemSize = NSMakeSize(260.0, 160.0);
layout.maximumItemSize = NSZeroSize;
self.theCollectionView.collectionViewLayout = layout;

(未显示集合视图项xib文件中的约束)

所需的结果是: a)用户通过拖动拆分视图分隔符来调整单行视图集合的大小,并在调整大小时保持其纵横比。 b)理想情况下,如果集合视图项目没有水平滚动,则它们将在集合视图中水平居中。

0 个答案:

没有答案