そーす

福岡在住のプログラマ

UIScrollViewは基本的にUIStackViewを内包していいのでは

iOS8を切れる状況なら、ですが。

class StackScrollView: UIScrollView {
    private(set) lazy var stack: UIStackView = {
        let stack = UIStackView()
        stack.axis = .vertical
        stack.alignment = .center
        return stack
    }()

    override init(frame: CGRect) {
        super.init(frame: frame)
        addSubview(stack)
        stack.snp.makeConstraints { (make) in
            make.top.equalTo(self)
            make.left.equalTo(self)
            make.right.equalTo(self)
            make.centerX.equalTo(self)
        }
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        contentSize = stack.frame.size
    }

 func push(view: UIView) {
        stack.addArrangedSubview(view)
    }
}

レイアウトにはSnapKit使ってます。 github.com

色なめんどくさいことから解放される感。