gpt4 book ai didi

macos - 自动调整 NSCollectionViewItem 大小以适合屏幕

转载 作者:行者123 更新时间:2023-12-03 16:35:09 66 4
gpt4 key购买 nike

我正在尝试创建一个 NSCollectionView,其中的项目适应可用空间,而不是为项目定义固定大小并相应地调整 NSCollectionView 的大小。

我无法找到使用 NSCollectionViewFlowLayout 实现这一目标的方法,因为它需要固定的项目大小。我使用 NSCollectionViewGridLayout 非常接近所需的结果。但是,我需要 CollectionViewItems 在缩放包含 NSCollectionView 的窗口时保持其纵横比(正方形),而 GridLayout 则根据其 min 和 maxItemSize 相应地缩放项目。根据窗口大小和集合中项目的数量,我最终得到的项目并不完全是正方形。

屏幕截图示例:distorted NSCollectionViewItems

我可能可以通过设置网格中的最大列数来解决这个问题,具体取决于集合中的项目数和窗口大小,但这似乎有点麻烦。有没有更好的方法来实现所需的布局?也许使用自定义 NSCollectionViewLayout?

最佳答案

您需要在 Controller 中实现以下协议(protocol):

NSCollectionViewDelegateFlowLayout

它有很多方法可以微调项目(大小/位置/边距)。不要忘记将 Collection View 布局设置为“流”(在 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 {
...
}

关于macos - 自动调整 NSCollectionViewItem 大小以适合屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231376/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com