Skip to content

Instantly share code, notes, and snippets.

@zirkler
Last active April 19, 2023 13:27
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zirkler/d83f24aeffb332a47dc8372c90026e26 to your computer and use it in GitHub Desktop.
Save zirkler/d83f24aeffb332a47dc8372c90026e26 to your computer and use it in GitHub Desktop.
stackview_scrollview
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
// 1.
lazy var stackView: UIStackView = {
let stackView = UIStackView()
stackView.axis = .horizontal
stackView.spacing = 20
return stackView
}()
// 2.
lazy var scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.addSubview(stackView)
scrollView.showsHorizontalScrollIndicator = false
return scrollView
}()
override func loadView() {
let view = UIView()
view.backgroundColor = .white
// 3.
view.addSubview(scrollView)
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
scrollView.heightAnchor.constraint(equalToConstant: 50).isActive = true
// 4.
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
stackView.heightAnchor.constraint(equalTo: scrollView.heightAnchor).isActive = true
// 5.
for _ in 0..<20 {
let circle = UIView()
circle.translatesAutoresizingMaskIntoConstraints = true
circle.widthAnchor.constraint(equalToConstant: 50).isActive = true
circle.heightAnchor.constraint(equalToConstant: 50).isActive = true
circle.backgroundColor = .gray
circle.layer.cornerRadius = 24
stackView.addArrangedSubview(circle)
}
self.view = view
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment