Le soluzioni sopra funzionano, ma stavo faticando a capire perché. Mi piacerebbe condividere questi due articoli che ho trovato estremamente utile nell'impostare correttamente il mininumZoomScale e farlo funzionare con iOS8/XCode 6.
Innanzitutto, ottenere la vista di scorrimento per lavorare su iOS8 richiede di impostare correttamente i vincoli dall'inizio. Altri poster hanno raccomandato, e sono d'accordo, che la tua vista di scorrimento debba avere sempre una sola vista di contenuto. Bene per incorporare tutte le altre visualizzazioni all'interno della vista del contenuto, ma non si desidera impostare i vincoli della vista di scorrimento su un numero limitato di viste.
Collegare i limiti superiore, iniziale, finale e inferiore alla vista di scorrimento dalla vista del contenuto (nel mio caso si tratta di un UIImageView) con costante 0. Questo imposta i bordi della vista del contenuto sulla vista di scorrimento.
Quindi, impostare la dimensione della vista del contenuto utilizzando i vincoli di Larghezza uguale e Altezza uguale alla vista di scorrimento. Non è possibile utilizzare la larghezza fissa e l'altezza fissa nella vista del contenuto perché lo zoom non funziona, né è possibile gestire la dimensione da soli. Senza questi vincoli, iOS8 imposta la dimensione su (0,0) prima di avere la possibilità di produrre alcuni artefatti dispari. Con questi vincoli, chiama il metodo updateZoom nel metodo di orientamento e sei bravo. In iOS7 chiamalo in doneRotateFromInterfaceOrientation. In iOS8 chiamalo da viewWillTransitionToSize. Dovrai aggiornare il codice per passare nella nuova dimensione.
Molte grazie a Natasha Il robot per la soluzione vincolo: http://natashatherobot.com/ios-autolayout-scrollview/
Quando si chiama il metodo updateZoom per ottimizzare il vostro minimo, si dovrebbe anche verificare se lo zoomScale corrente è < tua minimumZoomScale e ripristinare se è. Non dovresti resettare lo zoomScale altrimenti questo diventa un altro aspetto interrogativo dal tuo utente quando cambia l'orientamento.
quanto riguarda il resto di esso e perché i lavori di matematica, Joe Conway a objc.io disposti tutto fuori in questo fantastico articolo su limiti vs telaio con UIScrollViews: http://www.objc.io/issue-3/scroll-view.html
Grazie a entrambi e del manifesto sopra .
-(void)updateZoom {
self.scrollView.minimumZoomScale = MIN(self.scrollView.bounds.size.width/self.imageView.image.size.width, self.scrollView.bounds.size.height/self.imageView.image.size.height);
if (self.scrollView.zoomScale < self.scrollView.minimumZoomScale)
self.scrollView.zoomScale = self.scrollView.minimumZoomScale;
}