我正在尝试创建一个NSCollectionView,使它的项目适应可用空间,而不是为项目定义固定的大小,并相应地调整NSCollectionView的大小。
我想不出用NSCollectionViewFlowLayout实现这一点的方法,因为它需要一个固定大小的项目。使用NSCollectionViewGridLayout时,我非常接近预期的结果。然而,我需要CollectionViewItems在缩放包含NSCollectionView的窗口时保持它们的纵横比(正方形),而GridLayout根据项目的最小值和maxItemSize来缩放项目。根据窗口大小和集合中项目的数量,我最终得到的项目并不完全是正方形。
示例屏幕截图:distorted NSCollectionViewItems
我也许可以通过在网格中设置maximumNumberOfColumns来解决这个问题,这取决于集合中的项数和窗口大小,但是这看起来有点麻烦。有没有更好的方法来实现所需的布局?也许可以使用自定义的NSCollectionViewLayout?
发布于 2017-02-18 11:59:26
您需要在控制器中实现以下协议:
NSCollectionViewDelegateFlowLayout它有很多允许微调项目(大小/位置/边距)的方法。别忘了将你的集合视图布局设置为"flow“(在IB中)。
寻找实现以下方法:
func collectionView(collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAtIndex section: Int) -> NSEdgeInsets {
...
}
func collectionView(collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> NSSize {
...
}
func collectionView(collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
...
}https://stackoverflow.com/questions/42231376
复制相似问题