Sì, st3fan ha ragione, la proprietà contentSize di UIScrollView deve essere impostata. Ma non dovresti disattivare il layout automatico per questo scopo. Puoi facilmente configurare contentSize di UIScrollView con il layout automatico solo in IB, senza alcun codice.
È importante comprendere che quando si utilizza il layout automatico contentSize di UIScrollView non è impostato direttamente, viene calcolato in base ai vincoli di tutte le sottoview di UIScrollView. E tutto ciò di cui hai bisogno è fornire i vincoli appropriati per le sottoview per entrambe le direzioni.
Ad esempio, se hai solo una sottoview puoi impostarne l'altezza e lo spazio dall'alto e dal basso su superview (cioè scrollView nel nostro caso) contentSize.height è calcolato come somma
Vertical Space (aSubview.top to Superview.top) + aSubview.height + Vertical Space (aSubview.top to Superview.top)
contentSize.width viene calcolato in modo simile dai vincoli orizzontali.
Se ci sono troppo pochi vincoli per calcolare il contenuto, viene mostrato un piccolo pulsante rosso vicino alla voce Visualizza scena controller per informare sull'ambiguità del layout.
Se ci sono molte visualizzazioni secondarie, potrebbe trattarsi di una "catena" di vincoli: dall'alto alla sottoview più alta, altezze e spazi tra le sottoview e la sottoview più bassa verso il basso come nella risposta di Danyal Aytekin .
Ma in pratica nella maggior parte dei casièpiù conveniente solo aggiungere una vista vuota con le dimensioni richieste e impostare gli spazi in alto, a sinistra, in basso, a destra di scrollView a 0.
Puoi usare questa vista come "vista del contenuto" cioè mettere tutte le altre sottoviste su di essa o se hai già molte sottoview e non vuoi spostarle e impostare nuovamente il layout, puoi aggiungere questa vista ausiliaria alle sottoview esistenti e renderla nascosta.
Per rendere scrollView scorrevole il contenuto calcolato deve essere maggiore della dimensione scrollView.