NSCollectionView с вертикальной и горизонтальной способностью - PullRequest
0 голосов
/ 07 января 2019

Я делаю список с помощью NSCollectionView. Может содержать много столбцов и строк. Кажется, что я могу прокручивать вид только вертикально или горизонтально. Пример

Я понимаю, что основная проблема заключается в том, что ширина содержимого CollectionView автоматически устанавливается равной ширине просмотра документа в scrollview. Но для других видов просмотра, таких как NSImageView, размер не будет изменен.

sample

вот коды

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)
    }

}
...