macOS NSScrollView 不垂直滚动

macOS NSScrollView Not Scrolling Vertically

我正在尝试添加一些视图以查看 NSScrollView 是否会垂直滚动,但它什么也没做。

  private func configure2() {
        
        var yOffset = 0
        
        let scrollView = NSScrollView(frame: NSRect(x: 0, y: 0, width: 400, height: 900))
        
        scrollView.hasVerticalScroller = true
        
        for _ in 1...20 {
            
            let v = NSView(frame: NSRect(x: 0, y: 0 + yOffset, width: 50, height: 20))
            v.wantsLayer = true
            v.layer?.backgroundColor = NSColor.red.cgColor
            
            scrollView.addSubview(v)
            yOffset += 40
        }
        
        scrollView.backgroundColor = NSColor.green
        
        self.addSubview(scrollView)
        
    }

我记得在 UIKit 中我可以设置 UIScrollView 的 contentSize 属性 但在 macOS 中我不能设置 contentSize。

您需要设置 NSScrollViewdocumentViewcontentView。然后,您将向该视图添加子视图。

private func configure2() {
    var yOffset = 0
    let scrollView = NSScrollView(frame: NSRect(x: 0, y: 0, width: 400, height: 900))
    let documentView = NSView(frame: .zero)
    scrollView.hasVerticalScroller = true
    for _ in 1...20 {
        
        let v = NSView(frame: NSRect(x: 0, y: 0 + yOffset, width: 50, height: 20))
        v.wantsLayer = true
        v.layer?.backgroundColor = NSColor.red.cgColor
        
        documentView.addSubview(v)
        yOffset += 40
    }
    print(yOffset)
    documentView.frame = .init(x: 0, y: 0, width: 400, height: yOffset)
    scrollView.documentView = documentView
    scrollView.backgroundColor = NSColor.green
    self.addSubview(scrollView)
}