Last active
January 29, 2019 20:15
-
-
Save sketchytech/79dd3537795312fb091935c7806c1b74 to your computer and use it in GitHub Desktop.
A stack view that scrolls (which is actually a subclass of UIScrollView)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UIScrollingStackView:UIScrollView { | |
private let stack = UIStackView() | |
var spacing:CGFloat { | |
get { | |
return stack.spacing | |
} | |
set { | |
stack.spacing = newValue | |
} | |
} | |
var axis:UILayoutConstraintAxis { | |
get { | |
return stack.axis | |
} | |
set { | |
stack.axis = newValue | |
} | |
} | |
var arrangedSubviews:[UIView] { | |
return stack.arrangedSubviews | |
} | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
stack.translatesAutoresizingMaskIntoConstraints = false | |
self.addSubview(stack) | |
stack.topAnchor.constraintEqualToAnchor(self.topAnchor).active = true | |
stack.leadingAnchor.constraintEqualToAnchor(self.leadingAnchor).active = true | |
stack.trailingAnchor.constraintEqualToAnchor(self.trailingAnchor).active = true | |
} | |
required init?(coder aDecoder: NSCoder) { | |
fatalError("init(coder:) has not been implemented") | |
} | |
func addArrangedSubview(view:UIView) { | |
stack.addArrangedSubview(view) | |
} | |
} |
Swift 4 implementation:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.let scrollingStackView = UIScrollingStackView()
scrollingStackView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scrollingStackView)
scrollingStackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
scrollingStackView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
scrollingStackView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
scrollingStackView.heightAnchor.constraint(equalToConstant: 200).isActive = true
scrollingStackView.isPagingEnabled = true
scrollingStackView.bounces = false
scrollingStackView.showsHorizontalScrollIndicator = false
scrollingStackView.showsVerticalScrollIndicator = false
for _ in 0...10 {
let img = UIImageView(image: UIImage(named: "yourImage.JPG"))
scrollingStackView.addArrangedSubview(img)
}
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Swift 3