Using Auto Layout with
UIScrollView is surprisingly simple. You just need to add constraints to the content that will fill the entire scrollview by anchoring to the 4 edges of the scroll view. You don't need to set the content size of the scroll view explicitly. This is because the 4 edges actually refer to the scroll view's content view rather than the scroll view itself.
let scrollView = UIScrollView() content.translatesAutoresizingMaskIntoConstraints = false let content = UIView() //TODO: Set up `content`, adding subviews, etc content.translatesAutoresizingMaskIntoConstraints = false scrollView.addSubview(content) NSLayoutConstraint.activate([ content.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor), content.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor), content.topAnchor.constraint(equalTo: scrollView.topAnchor), content.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor), //Of course you'll want to layout the scrollview itself. Likely occupying the entire parent scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor), scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor), scrollView.topAnchor.constraint(equalTo: view.topAnchor), scrollView.bottomAnchor.constraint(equalTo: footerBar.topAnchor), //TODO set up constraints for `content` as you would have if there was no `UIScrollView` involved ])