Skip to content

Instantly share code, notes, and snippets.

@kopyl
Created April 4, 2025 04:36
Show Gist options
  • Save kopyl/55806c4ef09ac34244d20a91a6f6a69f to your computer and use it in GitHub Desktop.
Save kopyl/55806c4ef09ac34244d20a91a6f6a69f to your computer and use it in GitHub Desktop.
import Cocoa
class ViewController: NSViewController {
let items = Array(0..<30).map { String($0) }
private var scrollView: NSScrollView!
override func loadView() {
self.view = NSView(frame: NSRect(x: 0, y: 0, width: 400, height: 300))
}
override func viewDidLoad() {
super.viewDidLoad()
scrollView = NSScrollView(frame: view.bounds)
scrollView.hasVerticalScroller = true
scrollView.autoresizingMask = [.width, .height]
scrollView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scrollView)
let stackView = NSStackView()
stackView.orientation = .vertical
stackView.alignment = .leading
stackView.spacing = 4
stackView.translatesAutoresizingMaskIntoConstraints = false
scrollView.documentView = stackView
for item in items {
let textView = NSTextField(labelWithString: item)
stackView.addArrangedSubview(textView)
}
NSLayoutConstraint.activate([
stackView.leadingAnchor.constraint(equalTo: scrollView.contentView.leadingAnchor, constant: 10),
stackView.trailingAnchor.constraint(equalTo: scrollView.contentView.trailingAnchor, constant: -10),
stackView.topAnchor.constraint(equalTo: scrollView.contentView.topAnchor, constant: 10)
])
NSLayoutConstraint.activate([
scrollView.topAnchor.constraint(equalTo: view.topAnchor),
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment