Sim, st3fan está certo, a propriedade contentSize de UIScrollView deve ser definida. Mas você não deve desligar o autolayout para essa finalidade. Você pode facilmente configurar contentSize de UIScrollView com autolayout somente em IB, sem qualquer código.
É importante entender que, ao usar autolayout contentSize de UIScrollView, não é definido diretamente, ele é calculado com base nas restrições de todas as subvisualizações de UIScrollView. E tudo que você precisa é fornecer restrições adequadas para subvisualizações para ambas as direções.
Por exemplo, se você tiver apenas uma subvisualização, poderá definir sua altura e espaço de cima para baixo para superview (ou seja, scrollView em nosso caso) contentSize.height é calculado como a soma
Vertical Space (aSubview.top to Superview.top) + aSubview.height + Vertical Space (aSubview.top to Superview.top)
contentSize.width é calculado de forma semelhante a partir de restrições horizontais.
Se houver muito poucas restrições para calcular o contentSize corretamente, um pequeno botão vermelho é mostrado próximo ao item View Controller Scene para informar sobre a ambigüidade do layout.
Se houver muitas subvisualizações, então pode ser uma "cadeia" de restrições: subvisualização superior para superior, alturas e espaços entre subvisualizações e subvisualização inferior para inferior, como na resposta de Danyal Aytekin .
Mas na prática, na maioria dos casos, é mais conveniente apenas adicionar uma visualização vazia com o tamanho necessário e definir os espaços superior, esquerdo, inferior e direito de scrollView como 0.
Você pode usar esta visualização como "Visualização de conteúdo", ou seja, colocar todas as outras subvisualizações nela ou se você já tiver muitas subvisualizações e não quiser movê-las e configurar o layout novamente, você pode adicionar esta visão auxiliar às subvisualizações existentes e torná-la oculta.
Para tornar scrollView rolável, o contentSize calculado deve ser maior que o tamanho de scrollView.