我有一个NSCollectionView
与垂直NSCollectionViewFlowLayout
。 我在显示它的矩形图标。
我也有在UI的滑块,以及改变的时候,我调整minItemSize
,然后我在使用collectionView:itemForRepresentedObjectAtIndexPath:
创建一个同样大小的NSImageView
返回的NSCollectionViewItem
的imageView
。 然后我重装通过调用视图reloadData
。
在此之后,视图显示在新大小的图标如预期。
问题是,只要我有更多的数据,以显示出比适合当前scoll观点,认为当常规系统首选项设置为显示滚动条:滚动时 ,滚动条重装集合视图,并试图与滚动后消失触控板导致了在告诉我,滚动视图认为,内容就是什么是可见的,没有更多的滚动反弹。
但只要我调整窗口的大小,这也重新调整内部的集合视图,滚动条回来。
奇怪的是,如果系统偏好设置设置为显示滚动条:永远 ,那么问题不会出现,滚动总是工作,和滚动条始终保持可见。
我已经尝试了很多事情来触发滚动视图的重新计算,如无效集合视图的布局,滚动视图本身,它的内容视图的布局,并且还试图自己needsLayout设置为true。 没有什么使得这项工作。
更新:潜在的重复 ( NSCollectionView不会滚动过去的初始可见矩形项目 ),无论是collectionView.setFrameSize:
也不是window.setFrame:
建议对我的情况下工作(我试过前后分别增加这些线路reloadData
)。
即使我用力喜欢这个窗口的大小,因此,不带滚动条后面,只有在窗口边的手动拖动作用:
[self.collectionView.window setFrame:NSInsetRect(self.view.window.frame, 1, 1) display:YES];
还要注意的是,在我的情况下,开始滚动的作品,只是没有调整和重新加载后。
另一项发现:当我打电话selectItemsAtIndexPaths:scrollPosition:
reloadData后,再滚动回来。 但是,只有当我传递一个非空NSSet
的路径。 而且因为我可能没有选择任何产品,这是不是一个永久性的解决方案。
如果没有其他的想法上来,我会尽力做一个示范项目。