首页 > 解决方案 > 具有垂直和水平能力的 NSCollectionView

问题描述

我正在使用 NSCollectionView 制作一个列表。它可能包含许多列和行。看来我只能垂直或水平滚动视图。样本

我理解的痛点是,CollectionView 内容大小的宽度会自动设置为滚动视图中文档视图的宽度。但是对于其他类型的视图,例如 NSImageView,大小不会被调整。

样本

这是代码

import Cocoa

class ViewController: NSViewController {

    override var representedObject: Any? {
        didSet {
        }
    }

    var titles = [String]()
    var collectionView: NSCollectionView?

    override func viewDidLoad() {
        super.viewDidLoad()
        setup()

    }

    func setup(){

        self.titles = ["Banana", "Apple", "Strawberry", "Cherry", "Pear", "Pineapple", "Grape", "Melon"]

        collectionView = NSCollectionView()

        collectionView!.itemPrototype = CollectionViewItem()
        collectionView!.content = self.titles
        collectionView?.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([

            (collectionView?.widthAnchor.constraint(equalToConstant: 2000))!,
            (collectionView?.heightAnchor.constraint(equalToConstant: 2000))!
            ])

        collectionView?.setFrameSize(NSSize(width: 2000, height: 2000))

        var index = 0
        for title in titles {
            var item = self.collectionView!.item(at: index) as! CollectionViewItem
            item.getView().button?.title = self.titles[index]
            index = index + 1
        }

        var scrollView = NSScrollView(frame: NSRect(x: 0, y: 0, width: 400 , height: 200))

        let clipView = scrollView.contentView

        scrollView.backgroundColor = NSColor.red

        scrollView.documentView = collectionView


        self.view.addSubview(scrollView)
    }

}

标签: swiftmacosnscollectionview

解决方案


推荐阅读