【问题标题】:Weird behavior of NSCollectionView after window resize调整窗口大小后 NSCollectionView 的奇怪行为
【发布时间】:2019-07-26 19:04:00
【问题描述】:

这是我设置我的收藏视图的方式:

    let layout = NSCollectionViewFlowLayout.init()
    layout.scrollDirection = .vertical
    layout.minimumLineSpacing = 20
    layout.minimumInteritemSpacing = 20
    pCollectionView.collectionViewLayout = layout

    pCollectionView.backgroundColors = [NSColor.clear]
    pCollectionView.dataSource = self
    pCollectionView.delegate = self
    pCollectionView.isSelectable = true

在集合视图的委托中:

    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
        return NSSize(width: 240, height: 135)
    }

起初,它看起来不错。

但是在我调整应用程序的窗口大小后,出现了奇怪的事情。这是它的样子:

我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: swift macos layout resize nscollectionview


    【解决方案1】:

    您必须根据 collectionView.frame 的大小设置单元格的大小

    layout.minimumLineSpacing = 20
    layout.minimumInteritemSpacing = 20
    

    不是一个约束,不会像你想要的那样保留单元格。

    你必须:

    extension YourViewController: UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
             //work out the size of cell according to how many you want in a row
             return CGSize(width: screenWidth/3, height: cellHeight)
        }
    
    }
    

    【讨论】:

    • 谢谢。我刚刚发现了问题,不是布局而是加载NSCollectionViewItem的方式。
    【解决方案2】:

    过了一会儿,我发现这完全是我的错。

    在collectionview的委托方法中,我忘记使用func makeItem(withIdentifier identifier: NSUserInterfaceItemIdentifier, for indexPath: IndexPath) -> NSCollectionViewItem,而是每次都使用init(nibName: nil, bundle: nil)

    我觉得自己太傻了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多